为什么在更改演示文稿样式时我的视图会被抵消?

时间:2016-08-01 18:06:56

标签: ios uiview uiviewcontroller imessage

我有一个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

2 个答案:

答案 0 :(得分:1)

在我看来,每次切换到压缩或扩展模式时都不应重新实现条形。您应该将其实例化一次,然后将约束设置到视图的顶部。我试过这种方式并且工作正常;)

总而言之,如果您正在使用故事板

  1. 在故事板中将子视图添加到控制器
  2. 设置Top约束,宽度等于superview,centerX设置为superview
  3. 在代码中设置viewdidload中的搜索栏(委托等)
  4. 如果您不使用故事板。

    1. 加载你的xib并将其添加到你的子视图中(可能在didBecomeActive或类似的东西中)
    2. 别忘了将translatesAutoresizingMaskIntoConstraints设置为false
    3. 添加与上述相同的约束

答案 1 :(得分:0)

正如RomOne所说,你应该把它放在那里一次。样式开关应由约束

处理