我在UIScrollView
中有一个UIViewController
。现在我想在此滚动视图中添加多个容器视图。每个容器视图的大小与滚动视图的大小相同,即,一个容器视图基本上填充滚动视图。现在,我将通过设置容器视图的框架和更改滚动视图的contentSize,为此滚动视图添加多个容器视图。
这会在轮换中产生问题。当设备从纵向旋转到横向时,则一次显示2个容器视图。我想在旋转时调整这些容器视图的大小。我可以这样做的一种方法是在旋转设备时更新所有容器视图的帧(添加到目前为止的滚动视图)。
但我想使用自动布局约束来处理这个问题。但是在向滚动视图添加容器时,我无法获得要使用的约束。
答案 0 :(得分:0)
尝试使用UICollectionView。设置collectionView的大小以匹配显示,并将单元格大小设置为与集合视图几乎相同。在集合视图周围放置自动布局约束,以保持其边缘和超视图之间的距离不变。
使用CollectionViewFlowLayoutDelegate方法
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
控制细胞的大小。以下是我自己的一个项目的例子。
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
if (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) {
if (iPhone5) return CGSizeMake(470.f, 150.f);
else return CGSizeMake(380.f, 150.f);
}
if (iPhone5) return CGSizeMake(270.f, 325.f);
else return CGSizeMake(272.f, 390.f);
}
将容器视图放在单元格内,并将自动布局约束从容器边缘应用到单元格。
最后,覆盖集合视图布局并将滚动方向设置为水平。
答案 1 :(得分:0)
任何人都在这里登陆同一个问题,有一篇关于在使用autolayout时处理UIScrollView内部元素的好帖子https://www.natashatherobot.com/ios-autolayout-scrollview/。这完全值得一读。
简要总结: