2016-08-01 39 views
1

我有一個iMessage擴展,並且在更改演示文稿樣式時遇到了一些問題。當我第一次打開應用程序時,我得到:enter image description here 這就是它應該如何。現在當我改變擴展的演示風格時,這就是我得到的:enter image description here 這也是我想要的。然而,當我切換回緊湊,出現這種情況:enter image description here 這裏是我的代碼:爲什麼我的視圖在更改演示文稿樣式時會偏移?

override func didTransition(to presentationStyle: MSMessagesAppPresentationStyle) { 
    super.didTransition(to: presentationStyle) 
    presentSearchStickersView() 
} 
private func presentSearchStickersView() { 
    let controller = (storyboard?.instantiateViewController(withIdentifier: "SearchStickersViewController"))! as! SearchStickersViewController 
    controller.view.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1) 
    controller.searchDelegate = self 
    for child in childViewControllers { 
     child.willMove(toParentViewController: nil) 
     child.view.removeFromSuperview() 
     child.removeFromParentViewController() 
    } 
    self.addChildViewController(controller) 
    self.view.addSubview(controller.view) 
} 

這裏是我的首要約束的截圖:enter image description here

回答

0

在我的角度來看,你不應該重新實例每當你切換到緊湊或擴展模式時,酒吧。您應該實例化一次,然後將約束設置爲視圖頂部。我已經試過這種方式,它的工作罰款;)

所以總結一下,如果你使用的是故事板

  1. 在你的故事板的子視圖添加到控制器
  2. 設置一個最高限制,寬度爲上海華和的centerX如果你不使用故事板的SuperView
  3. 在代碼中設置搜索欄(委託等)在viewDidLoad中

  1. 加載您的廈門國際銀行,並把它添加到您的子視圖(也許在didBecomeActive或類似的東西)
  2. 不要忘記將translatesAutoresizingMaskIntoConstraints設置爲false
  3. 添加相同的約束如上
+0

我這樣做了,但是在展開後,我的視圖的頂部部分隱藏在導航欄的後面。這就是爲什麼我代表視圖控制器 –

+0

您是否使用過「頂部佈局指南」約束? – RomOne

+0

是的,我使用了'頂部佈局指南'。我添加了一個屏幕截圖 –

0

正如RomOne說你應該把它放在那裏一次。樣式開關應該通過約束來處理

相關問題