我有一个简单的UICollectionViewCell
,带有一个图像和一个标签。在常规尺寸的课堂上,我希望图片处于最佳状态,并在其下面加上标签。这就是它看起来像在Xcode的预览标签:UICollectionViewCell - 针对不同大小类别的不同布局
在任何其他级别大小我想图像出现在左边,而右边的标签:
我设置的约束是这样的:
ImageView的有以下限制:
- 前缘和顶约束所有-不限
- 固定的宽度和高度的任何-不限
该标签具有以下约束条件:
- 尾随约束的SuperView - 所有-任何
- 对ImageView的最大限制 - 仅用于Regular-Regular
- 对Superview的主要限制 - 仅适用于Regular-Regular
- 顶部约束到上海华 - 所有,任何但是对于常规定期
- 导致约束ImageView的不是 - 所有,任何但是对于常规定期
不是我还实施返回不同的方法根据当前的特征集合单元尺寸:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
if (traitCollection.horizontalSizeClass == .Regular) {
return CGSizeMake(240, 194)
}
else {
return CGSizeMake(340, 128)
}
}
细胞看起来很好的预览,当我在iPhone上(如紧凑型普通)运行它的一切工作正常。然而,当我在iPad上运行自动布局打破:
当然,我得到了一堆在调试控制台的警告:无法同时满足的约束。
所以,我想问题是 - 为不同大小类别设置单元格的正确方法是什么?
我创建了一个github上回购了demo project
谢谢!
如果只支持iOS的9和更高版本,可以通过使用stackView –