2016-07-17 41 views
1

我想在iMessage應用程序(iOS 10)中放置一個帶有表格視圖控制器的導航控制器。這似乎工作時,我把UINavigationControllerMSMessagesViewControllerUIContainerView如何保持導航欄消失與MSMessagesViewController - > UIContainerView - > UINavigationController - > UITableViewController?

Appearance when compact.

然而,這打破展開視圖時。控制器已經消失的UINavigationBar

Broken appearance when expanded.

我怎樣才能解決這個問題,還是我採取了錯誤的方法呢?

回答

0

所以在我的情況,我用的是故事板,所以我將添加到故事板的解決方案。

與DLee的答案類似,頂部約束條件需要設置爲「頂部佈局指南」而不是「頂部」。下面是它看起來像一個故事板:

Container View.top = Top Layout Guide.bottom

在我的情況,我用一個容器視圖來保存所有的,所以用這種具有頂部佈局引導設置爲頂部約束,這讓在諸事正確的地方。

在我的文章中,我最初使用了「頂部」,這是導致部分iMessage應用程序(特別是導航欄)消失的原因。

0

在顯示的屏幕中,導航欄沒有任何問題!

+0

是的,有。在第二個屏幕截圖中,「項目」導航欄消失。 –

2

讓我開始以您view.addSubview添加您UITableViewControllerMSMessagesAppViewController

爲了正確地顯示在導航欄的假設。確保您已正確設置所有約束。下面是我的例子,希望這會爲你工作:

 

    // Embed the new controller. Recommended way of presenting VC shown in WWDC (icecream example). Ugly but does the work 
    addChildViewController(controller) 

    view.addSubview(controller.view) 
    let viewRect = view.bounds 
    controller.view.frame = viewRect 
    controller.view.translatesAutoresizingMaskIntoConstraints = false 


    controller.view.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true 
    controller.view.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true 
    controller.view.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true 

    if presentationStyle == .compact { 
     controller.view.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true 
    } else { 
     controller.view.bottomAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor).isActive = true 
    } 

    controller.didMove(toParentViewController: self) 

這裏的鏈接到蘋果開發者論壇的帖子裏面解決我的問題:https://forums.developer.apple.com/thread/52049

相關問題