【问题标题】:iPhone 6 Plus Autolayout issue with UISplitViewController and UISearchController during rotation旋转期间 UISplitViewController 和 UISearchController 的 iPhone 6 Plus 自动布局问题
【发布时间】:2016-03-18 16:51:55
【问题描述】:

UISearchControllerUISplitViewController 界面中的主设备上显示时,自动布局在 iOS 8/9 上无法正常工作。

重现此问题:

  1. 在 Xcode 中创建一个新的 Master-Detail 应用程序(使用 swift,无核心数据)
  2. var searchController: UISearchController! 添加到MasterViewController
  3. viewDidLoad()下添加以下内容

    searchController = UISearchController(searchResultsController: nil)
    definesPresentationContext = true
    tableView.tableHeaderView = searchController.searchBar
    
  4. 在 iPhone 6 Plus 或模拟器上运行应用程序

  5. 旋转到横向。
  6. 点击“+”按钮并选择项目以便更新详细信息
  7. 点击搜索栏将其显示在导航栏中
  8. 旋转回纵向,细节现在应该占据整个屏幕。
  9. 导航回母版(点击“
  10. 关闭搜索(点击“取消”)
  11. 转回横向

现在您可以看到 UISearchBar 没有对齐。

我们可以在视图调试器中验证这一点:

如果单击“显示剪辑的内容”按钮,此问题会更加明显:

错位的不仅仅是UISearchBar,而是整个MasterViewController。

我也在本机邮件和消息应用程序中重现了这个问题:

有没有人找到解决这个特定问题的方法或解决方案?

【问题讨论】:

    标签: ios autolayout uisplitviewcontroller uisearchcontroller iphone-6-plus


    【解决方案1】:

    目前我发现的唯一可接受的解决方案是实现UISplitViewControllerDelegate 方法:

    func splitViewController(splitViewController: UISplitViewController,
        collapseSecondaryViewController secondaryViewController: UIViewController,
        ontoPrimaryViewController primaryViewController: UIViewController) -> Bool {
            return true
    }
    

    不要忘记设置拆分视图控制器的委托。

    虽然这可能不是理想的折叠行为,但它似乎确实可以防止自动布局问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      相关资源
      最近更新 更多