gpt4 book ai didi

ios - traitCollection 更改时更改单元格布局

转载 作者:行者123 更新时间:2023-12-01 18:44:23 25 4
gpt4 key购买 nike

当水平尺寸类发生变化时,我在调整单元格的布局时遇到问题。

我的单元格有一个 stackView,我希望轴是水平的紧凑尺寸类和垂直的常规。

这是我尝试过的:

override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {
if previousTraitCollection?.horizontalSizeClass != traitCollection.horizontalSizeClass {
self.collectionView?.reloadData()
}
}

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell

switch traitCollection.horizontalSizeClass {
case .Compact:
cell.stackView.axis = .Horizontal
default:
cell.stackView.axis = .Vertical
}

return cell
}

但结果是并非所有单元格都会更新其布局,请参见下面的 gif。

编辑:
我已通过在 cellForItem 中打印确认轴已正确更改并在单元格本身中。所以问题似乎是单元格没有重绘..

Cell layout problems

有什么建议我应该如何解决这个问题?

Github Repo

最佳答案

添加电话至 layoutIfNeeded()cellForItemAtIndexPath方法以获取堆栈 View 以重新布局其内容:

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell

switch traitCollection.horizontalSizeClass {
case .Compact:
cell.stackView.axis = .Horizontal
default:
cell.stackView.axis = .Vertical
}

cell.stackView.layoutIfNeeded()

return cell
}

关于ios - traitCollection 更改时更改单元格布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37674941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com