这可能是一个简单的问题 - 我是iOS开发新手。动态布局iOS与集合视图
我有一个带有集合视图的主页,其中有四个单元格,它们以纵向模式占用整个屏幕(左上角,右上角,左下角,右下角)。在横向模式下,我希望所有四个单元格都连在一起。
是集合查看要使用的正确布局?我应该使用Autoresizing执行此操作,还是必须使用其他布局约束?
谢谢!
这可能是一个简单的问题 - 我是iOS开发新手。动态布局iOS与集合视图
我有一个带有集合视图的主页,其中有四个单元格,它们以纵向模式占用整个屏幕(左上角,右上角,左下角,右下角)。在横向模式下,我希望所有四个单元格都连在一起。
是集合查看要使用的正确布局?我应该使用Autoresizing执行此操作,还是必须使用其他布局约束?
谢谢!
UICollectionView是正确的布局使用。 可用于制造布局
func collectionView(collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout
let totalSpace = flowLayout.sectionInset.left
+ flowLayout.sectionInset.right
+ (flowLayout.minimumInteritemSpacing * CGFloat(4 - 1))
let size = Int((collectionView.bounds.width - totalSpace)/CGFloat(4))
return CGSize(width: size, height: size)
}
以下你可以使用它您的视图控制器内的方式如下
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
@objc(collectionView:layout:sizeForItemAtIndexPath:)
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout
let totalSpace = flowLayout.sectionInset.left
+ flowLayout.sectionInset.right
+ (flowLayout.minimumInteritemSpacing * CGFloat(4 - 1))
let size = Int((collectionView.bounds.width - totalSpace)/CGFloat(4))
return CGSize(width: size, height: size)
}
}
这个功能应该在哪里? –
在你的视图控制器中,我编辑答案请检查 –
应该beetween UIStackView合并和Sizeclasses
stackviews必须有填充equaly分布。
选择stackview必须有轴垂直默认,但你应该添加横轴sizeclass 宽度正规|任何高度
我会将前两个视图置于水平堆栈视图中,将第二个视图置于另一个水平堆栈视图中,然后将这两个堆栈视图置于横向和纵向之间切换横向/纵向的外部堆栈视图 – dan