似乎很容易,但我就是无法正确设置这个准系统!请注意,我不想通过代码添加约束,而是通过 IB 完成所有操作:
- 故事板中的一个视图控制器,其主视图和一个集合视图作为主视图的子视图
- 我想设置它,以便在加载视图控制器时,其主视图调整为设备屏幕尺寸(3.5 对 4,因此 320 x 480 对 320 x 568)。并且集合视图也应该调整大小以占据其父视图定义的整个区域。
我做了什么:
- 使用带有主视图的新视图控制器创建了一个新的故事板
- 创建集合视图作为主视图的子视图。
- 将集合视图的大小设置为与其在 IB 中的父级相同的大小(在编辑时为 4 英寸格式)。
- 我将集合视图的前导、顶部、尾随和底部约束相对于超级视图设置为 0。我假设这意味着“调整大小以使间距约束保持不变”,因为它们都是 0,这意味着调整大小以适应整个超级视图区域。
- 在视图控制器代码中,我确保它与集合视图一起完成数据源/委托。也就是说,collection view 正在加载单元格,并且内容大小的高度总是大于设备屏幕,所以无论 collection view 是全屏的,总会有要滚动的内容。
我的期望: 在应用程序启动和视图加载时,视图控制器的主视图及其子视图(集合视图)都应为 320x480 或 320x568,具体取决于设备屏幕尺寸。
实际发生的情况: 在应用程序启动和视图加载时,视图控制器的主视图调整为 320x480,但集合视图卡在 320x568,这是我在 IB 中给它的设计时大小。
我也遇到约束冲突:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0xed66060 V:[UICollectionView:0x13a79400]-(-548)-[_UILayoutGuide:0xed65c90]>",
"<NSLayoutConstraint:0xed66090 V:[UICollectionView:0x13a79400]-(0)-[_UILayoutGuide:0xed65da0]>",
"<_UILayoutSupportConstraint:0xed4d4e0 V:|-(0)-[_UILayoutGuide:0xed65c90] (Names: '|':UIView:0xed65c00 )>",
"<_UILayoutSupportConstraint:0xed65730 V:[_UILayoutGuide:0xed65da0(0)]>",
"<_UILayoutSupportConstraint:0xed651f0 _UILayoutGuide:0xed65da0.bottom == UIView:0xed65c00.bottom>",
"<NSAutoresizingMaskLayoutConstraint:0xed72ee0 h=--& v=--& V:[UIView:0xed65c00(480)]>"
)