我有一个带有UICollectionView的ViewController。在故事板中,我已经布置了单元格。
我添加的单元格:
然后我在故事板中添加了自动布局约束:
当我运行模拟器时,这不起作用。我认为它没有用,因为我使用的是自定义单元格。所以我通过为所有约束设置IBOutlets并在cellForItemAtIndexPath方法中重置它们的值来修复它并使其正常运行:
//Layout cell
cell.img_Height.constant = 50
cell.img_Width.constant = 50
cell.leading_Img_to_Container.constant = 10
cell.trailing_Img_to_Container.constant = 10
cell.top_Img_to_Container.constant = 10
cell.bottom_Img_to_Container.constant = 10
cell.top_Container_to_Cell.constant = 10
cell.bottom_Container_to_Label.constant = 0
cell.horizontalCenter_Container_to_Cell.constant = 0
cell.bottom_Label_to_Cell.constant = 0 //Flexible constraint: In storyboard this relation is 'Greater than or equal to'
cell.horizontalCenter_Container_to_Label.constant = 0
当我运行应用程序时,集合视图看起来不错。但是,当我检查控制台时,它说它正在打破限制:
无法同时满足约束条件。 可能至少下列列表中的一个约束是您不想要的约束。试试这个:(1)看看每个约束并试着找出你不期望的东西; (2)找到添加了不需要的约束或约束的代码并修复它。 (注意:如果您看到您不理解的NSAutoresizingMaskLayoutConstraints,请参阅UIView属性的文档translatesAutoresizingMaskIntoConstraints) ( “” “” “” “” “” “= UILabel:0x7fc0026d2580'Grocery List'.bottom>”, “” ) 将尝试通过打破约束来恢复 NSLayoutConstraint:0x7fc0026ba9d0 V:[UIImageView:0x7fc0026d2440(50)]>
我一直在调整约束并尝试调试这个,但我无法弄清楚我做错了什么。如何正确设置布局?
答案 0 :(得分:1)
我能够通过消除我的图像容器来解决我的问题,这简化了布局,因此也简化了所需的约束。
由于单元格是预定的大小,我的新方法只是将事物放在中心位置,并确保它们的y位置相互清晰。
此时,我的约束:
答案 1 :(得分:0)
cell.img_Height.constant = 50
cell.img_Width.constant = 50
cell.leading_Img_to_Container.constant = 10
cell.trailing_Img_to_Container.constant = 10
cell.top_Img_to_Container.constant = 10
cell.bottom_Img_to_Container.constant = 10
你为cell.img添加了太多的约束 top_Img_toContainer和Bottom img_to_Container Constrain是不必要的。
您需要了解原则。
您添加到故事板的每个视图都必须有足够的约束(既不多也不少)来确认:
宽度
高度
X位置
Y位置