gpt4 book ai didi

ios - 以编程方式更改 UICollectionView 中的第一项

转载 作者:行者123 更新时间:2023-11-28 05:35:35 24 4
gpt4 key购买 nike

我目前渲染了 10 个彩色圆圈,您可以水平滑动来选择它们。我想以编程方式更改 UICollectionView 中的第一项,并在第一项中添加一张相机的小图片。绑定(bind)的集合只是一个 RGB 值数组。我将第一个设置为全 0,因此它是一种独特的颜色,因为它永远不会被真正使用。

对于第一项,我不希望它成为在 View 中滚动的第一项,而是当您无法再滚动并且您位于集合中真正的第一项时。

func collectionView(_ collectionView: UICollectionView, willDisplay: UICollectionViewCell, forItemAt: IndexPath) {
...
...

//Define the first item as the indexpath 0,0
let firstItem:IndexPath = IndexPath(row: 0, section: 0)


if (forItemAt == myIndexPath)
{
coloredCircle.addSubview(cameraImageView!)
}
else {
cameraImageView!.removeFromSuperview()
}

所以上面,我的想法是我会检查第一个项目是否进入 View ,然后将它添加到 subview ,否则我会把它拿走(因为它似乎以某种奇怪的方式堆叠) .

无论哪种方式,尝试这个它都会表现出一些奇怪的行为,第一个项目会进入视野并显示相机,但一旦我停止滚动,它就会消失。

因此,如果我缓慢滚动,第一个项目就看不见了,然后再慢慢滚动回来,它就会正常显示并正常工作!

enter image description here

但是一旦我向左滚动直到我不能再移动,或者滚动得有点快,它就会消失:

enter image description here

有什么建议或方法可以使第一个圆圈永久成为一个小相机吗?

最佳答案

您不需要将逻辑放在 willDisplay 中,而是可以简单地在彩色圆圈内使用 UIImageView,并根据 indexPath 简单地隐藏/取消隐藏它。此外,将相机图像放入 ImageView 中。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

let firstItem:IndexPath = IndexPath(row: 0, section: 0)
if indexPath == firstItem {
coloredCircle.imageView.isHidden = flase
}else{
coloredCircle.imageView.isHidden = true
}

}

关于ios - 以编程方式更改 UICollectionView 中的第一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58760431/

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