框架大小更改时 UICollectionView 布局更改
UICollectionView layout change when frame size changes
我正在使用 UICollectionView
但我有一个奇怪的行为。
我想要水平滚动,单元格高度小(小于 UICollectionView
高度)。
点击按钮会增加 collection.
的高度
问题是我的单元格布局也在发生变化。
我希望 collection 视图高度随着单元格保持在同一位置而增加。
这里附上 2 个屏幕截图(触摸 before/after 按钮)。
这是我的代码:
var smallLayout:UICollectionViewFlowLayout = UICollectionViewFlowLayout();
smallLayout.scrollDirection = .Horizontal
var itemHeight = 100
smallLayout.itemSize = CGSizeMake(150, itemHeight);
var bottomDist:CGFloat = 1
var topDist = collHeight - itemHeight - bottomDist
smallLayout.sectionInset = UIEdgeInsets(top: topDist, left: 2, bottom: bottomDist, right: 2)
smallLayout.minimumInteritemSpacing = 15
smallLayout.minimumLineSpacing = 10
所以,当触摸按钮时,我有以下代码:
let viewHeight = CGRectGetHeight(self.view.frame)
let viewWidth = CGRectGetWidth(self.view.frame)
var collHeight:CGFloat = 600
var collYPosition = viewHeight-CGFloat(collHeight)-20
var rect = CGRectMake(0, CGFloat(collYPosition), CGFloat(viewWidth), CGFloat(collHeight))
dishCollectionView.frame = rect
所以,我无法理解为什么我的布局会发生变化。
我想让我的手机在底部。
也许如果您重置 sectionInset
的顶部以适应额外的高度,即更新的 topDist
计算。尝试在触摸代码上向您添加类似这样的内容:
var bottomDist:CGFloat = 1
var topDist = collHeight - itemHeight - bottomDist
dishCollectionView.collectionViewLayout.sectionInset = UIEdgeInsets(top: topDist, left: 2, bottom: bottomDist, right: 2)
dishCollectionView.collectionViewLayout.invalidateLayout()
我正在使用 UICollectionView
但我有一个奇怪的行为。
我想要水平滚动,单元格高度小(小于 UICollectionView
高度)。
点击按钮会增加 collection.
问题是我的单元格布局也在发生变化。 我希望 collection 视图高度随着单元格保持在同一位置而增加。 这里附上 2 个屏幕截图(触摸 before/after 按钮)。 这是我的代码:
var smallLayout:UICollectionViewFlowLayout = UICollectionViewFlowLayout();
smallLayout.scrollDirection = .Horizontal
var itemHeight = 100
smallLayout.itemSize = CGSizeMake(150, itemHeight);
var bottomDist:CGFloat = 1
var topDist = collHeight - itemHeight - bottomDist
smallLayout.sectionInset = UIEdgeInsets(top: topDist, left: 2, bottom: bottomDist, right: 2)
smallLayout.minimumInteritemSpacing = 15
smallLayout.minimumLineSpacing = 10
所以,当触摸按钮时,我有以下代码:
let viewHeight = CGRectGetHeight(self.view.frame)
let viewWidth = CGRectGetWidth(self.view.frame)
var collHeight:CGFloat = 600
var collYPosition = viewHeight-CGFloat(collHeight)-20
var rect = CGRectMake(0, CGFloat(collYPosition), CGFloat(viewWidth), CGFloat(collHeight))
dishCollectionView.frame = rect
所以,我无法理解为什么我的布局会发生变化。
我想让我的手机在底部。
也许如果您重置 sectionInset
的顶部以适应额外的高度,即更新的 topDist
计算。尝试在触摸代码上向您添加类似这样的内容:
var bottomDist:CGFloat = 1
var topDist = collHeight - itemHeight - bottomDist
dishCollectionView.collectionViewLayout.sectionInset = UIEdgeInsets(top: topDist, left: 2, bottom: bottomDist, right: 2)
dishCollectionView.collectionViewLayout.invalidateLayout()