簡體   English   中英

旋轉期間 UISplitViewController 和 UISearchController 的 iPhone 6 Plus Autolayout 問題

[英]iPhone 6 Plus Autolayout issue with UISplitViewController and UISearchController during rotation

UISearchController出現在UISplitViewController界面中的UISplitViewController上時,自動布局在 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 郵件應用程序

iOS 消息應用程序

有沒有人找到解決此特定問題的方法或解決方案?

到目前為止,我發現的唯一可接受的解決方案是實現UISplitViewControllerDelegate方法:

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

不要忘記設置拆分視圖控制器的委托。

雖然這可能不是所需的折疊行為,但它似乎可以防止自動布局問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM