我有一个集合视图,它形成一个15 x 15的网格。我想将它的高度和宽度设置为包含它的视图高度的0.5(或某个倍数)。我在故事板中完成了这个并将宽高比设置为1:1。
我的问题是,当我将屏幕旋转到横向时,网格不再是15 x 15。
我可以直接在故事板中设置高度,例如300 x 300但是我遇到了让它适合不同设备的问题。
答案 0 :(得分:0)
答案 1 :(得分:0)
您遇到此问题,因为横向模式下的高度低于纵向高度。所以,如果你设置宽度& UICollectionView
的高度限制相等(有些乘数)到superview
它会在您旋转设备时自动更改大小
你可以做什么呢?连接宽度&代码中的高度出口,并在viewDidLoad
方法
答案 2 :(得分:0)
试试这个
extension MYViewController: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: collectionView.frame.width/15, height: collectionView.frame.height/15)
}
}
添加这些行
override func viewWillLayoutSubviews() {
guard let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout else {
super.viewWillLayoutSubviews()
return
}
flowLayout.invalidateLayout()
super.viewWillLayoutSubviews()
}