gpt4 book ai didi

ios - 执行 setCollectionViewLayout 时,UICollectionViewCel 中的布局看起来很奇怪

转载 作者:行者123 更新时间:2023-11-28 07:03:48 27 4
gpt4 key购买 nike

我有两个 nib 文件,分别是 RowRecordLayout 和 ColumnLayout。 enter image description here enter image description here

我确实将 nib 单元格注册到 UICollectionView,以便稍后在 cellForItemAtIndexPath 函数中使用。这是我的代码

 override func viewDidLoad() {
self.DJCollectionView.registerNib(UINib(nibName: "RowTemplateCell", bundle: NSBundle.mainBundle()), forCellWithReuseIdentifier: "DJCELL")
self.DJCollectionView.registerNib(UINib(nibName: "ColumnTemplateCell", bundle: NSBundle.mainBundle()), forCellWithReuseIdentifier: "DJCELL2")
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath
indexPath: NSIndexPath) -> UICollectionViewCell {

var ProductCardCellpt : DJCell?

if self._CurrentLayoutType == enum_Layout.RowRecords {
reuseIdentifier = "DJCELL"
ProductCardCellpt = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as? DJCell

}else{
reuseIdentifier = "DJCELL2"
ProductCardCellpt = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as? DJCell
...
}
return ProductCardCellpt!
}

最后,当我触摸 DJ 按钮时。过渡之间的动画是好的,除了单元格内的意外约束

Initial Layout New Layout

这里是Transition布局的代码

 @IBAction func Action_ToggleLayout(sender: UIBarButtonItem) {
if _CurrentLayoutType == enum_Layout.TwoColumn {
_CurrentLayoutType = enum_Layout.RowRecords
self.DJCollectionView.setCollectionViewLayout(self._RowRecordsLayout_CollectionViewLayout!, animated: true, completion: { (IsDone) -> Void in

})
}
else{
_CurrentLayoutType = enum_Layout.TwoColumn
self.DJCollectionView.setCollectionViewLayout(self._TwoColumnLayout_CollectionViewLayout!, animated: true, completion: { (IsDone) -> Void in

}
})
}

}

当我向上或向下滚动时,单元格内的内容恢复正常。有解决这个问题的解决方案吗?

最佳答案

问题是当您更改布局时,您当前显示的单元格不会更新。它们仅在您滚动时更新。在布局更改时执行类似调用 collectionView.reloadData() 的操作应该可以完成工作。

但我认为您没有正确使用 collectionView。布局与 UICollectionViewCell 无关,动画将不起作用。所以我认为在更改 UICollectionView 的布局时更改 collectionView 单元类不是一个好习惯。您应该覆盖自定义 collectionViewCell 的方法 willTransitionFromLayout: 并在此处更改单元格的约束。类似于 Working with AutoLayout in Portrait and Landscape .

希望这可以引导您走上正确的道路。

关于ios - 执行 setCollectionViewLayout 时,UICollectionViewCel 中的布局看起来很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31345801/

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