autolayout - iOS 10 消息扩展 - 使用 Storyboard Segue 时布局错误

标签 autolayout ios10 uistoryboardsegue imessage ios-messages-extension

在消息扩展应用程序中使用 Segue 时,布局会变得困惑。
有什么办法可以在仍然使用 Storrybord segues 的同时解决这个问题?

截图:
(注意:第一个和第二个 View/ViewController 是相同的。segue-type 无关紧要)

扩展演示样式:

1Exp
2Exp

简洁的展示风格:

1Comp
2Comp

更新 1:

顶部和底部布局指南在 segue 后重置

  • 袖珍的:
  • 顶部:应该是: 0 但是是: 20
  • 底部:应该是: 44 但是是: 0
  • 扩展:
  • 顶部:应该是: 86 但是是: 20
  • 底部:应该是: 44 但是是: 0

  • 附言有人可以创建一个新的“消息扩展”标签吗?

    最佳答案

    我希望这并不总是必要的,但我最终使用了约束导出、presentationStyle 变量和 viewDidLayoutSubviews() 的组合来克服这个错误/疏忽。

    在我的 DetailViewController 中:

    @IBOutlet weak var myViewTopConstraint: NSLayoutConstraint!
    var presentationStyle: MSMessagesAppPresentationStyle?
    
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        if presentationStyle == .expanded {
            myViewTopConstraint.constant = 86
        } else {
            myViewTopConstraint.constant = 0
        }
    }
    

    在我的 MainViewController 中:
    override func willTransition(to presentationStyle: MSMessagesAppPresentationStyle) {
        if let detailController = presentedViewController as? DetailViewController {
            detailController.presentationStyle = presentationStyle
        }
    }
    

    如果它有所作为,我的 segue 以模态方式呈现为页面表。

    关于autolayout - iOS 10 消息扩展 - 使用 Storyboard Segue 时布局错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593054/

    相关文章:

    swift - 无论如何,表格 View 单元格都会保持突出显示

    ios - 设置文本后使用自动布局获取 UITextView 动态高度

    ios - 本地通知不显示自定义操作按钮

    xcode - Xcode 8 中的警告 : Instance method nearly matches optional requirement

    ios - 带有通知内容扩展的折叠通知中的小缩略图

    ios - 从侧面菜单中选择主 ViewController

    ios - 如何防止两次执行相同的segue?

    ios - 如何使用自动布局更改uiview的高度?

    ios - 如何为旋转的 UISlider 设置约束?

    swift - iOS - 约束和验证特征