我尝试实现一个视图,该视图在情节提要中的顶部具有动态高度,而在UICollectionView下方。
只要我直接在一个ViewController中进行布局,一切就可以正常工作。
当顶视图由单独的ViewController管理并嵌入时,我总是遇到自动布局问题:
SizingSample[53440:11697282] [LayoutConstraints] Unable to simultaneously satisfy constraints. (
"<NSLayoutConstraint:0x6000030cc690 UILayoutGuide:0x600002af9180'UIViewSafeAreaLayoutGuide'.bottom == SizingSample.DynamicSizeView:0x7fda024197b0.bottom + 3 (active)>",
"<NSLayoutConstraint:0x6000030cc960 SizingSample.DynamicSizeView:0x7fda024197b0.top == UILayoutGuide:0x600002af9180'UIViewSafeAreaLayoutGuide'.top + 20 (active)>",
"<NSLayoutConstraint:0x6000030c52c0 'UIView-Encapsulated-Layout-Height' UIView:0x7fda024195d0.height == 0 (active)>",
"<NSLayoutConstraint:0x6000030cc870 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x600002af9180'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':UIView:0x7fda024195d0 )>",
"<NSLayoutConstraint:0x6000030cc7d0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x600002af9180'UIViewSafeAreaLayoutGuide'] (active, names: '|':UIView:0x7fda024195d0 )>"
)
IMO,“ UIView-Encapsulated-Layout-Height”约束破坏了所有内容,但我还没有找到防止它的方法。
可以在https://github.com/tengelmeier/viewcontroller-embedding-problem.git上找到简化的样本
如何自动布局一个视图以遵循嵌入式视图(.controller)的动态尺寸?
答案 0 :(得分:0)
由于ios在嵌入ContainerController时会自动应用固定帧集,因此您必须告诉不要将自动调整大小的蒙版转换为LayoutConstraint。
您可以通过在ContainerViewController(目标控制器)ViewdidLoad方法中设置以下属性来实现此目的。
view.translatesAutoresizingMaskIntoConstraints = false