我面临着一个挑战,当集合计数为 1 时,我的 UICollectionView 不显示项目。更具体地说,它在调用 reloadSections 时短暂闪烁,或者在调用 reloadData 时根本不显示。 此集合视图作为 UITableViewCell 内的项目出现。
即使我没有使用 Xamarin,我在 Xamarin 板上找到的这篇文章几乎总结了我所经历的情况:https://forums.xamarin.com/discussion/35471/cells-from-custom-uicollectionviewcontroller-disappear -一秒后(1秒后,我的细胞消失了)
一切都非常基本:
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.members.count
}
//Rendering the collection view cells
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath as IndexPath)
let member: GroupMemberDto = members[indexPath.item]
let contactInitials = cell.viewWithTag(1) as! UILabel
let contactAvatar = cell.viewWithTag(2) as! UIImageView
contactAvatar.image = UIImage(named: "anonymous")
contactInitials.text = member.displayName
contactAvatar.layer.cornerRadius = contactAvatar.frame.size.width / 2
contactAvatar.clipsToBounds = true
contactAvatar.contentMode = UIViewContentMode.scaleAspectFill
contactAvatar.layer.borderWidth = 0.2
contactAvatar.layer.borderColor = UIColor.black.cgColor
UserService.getProfilePicture(userId: member.userId) {
response in
contactAvatar.image = response
}
return cell
}
当我将它绑定到 10 个项目的集合时,它起作用了。但是,如果我进入“numberOfItemsInSection”并将其更改为返回“1”而不是“self.members.count”,它会短暂闪烁第一个成员,然后消失。
我确信这个问题与代码无关,而是与用户界面有关——我遇到了一些其他帖子,这些帖子间接提到事情不会被拉出来,或者可能会发生这些奇怪的错误,但是我无法拼凑出一个明确的答案.
任何人都可以指导我或就可能导致此问题的原因提供一些建议吗?
谢谢!!
好吧,我想出了这一点,希望它可以帮助别人。
我进入 UIStoryBoard 上的 collectionview 并将内容插入设置为 1(之前它们是 0),此外滚动指示器插入也设置为 1(它们都是 0)。
执行此操作后,该项目将渲染并保持渲染状态!
我在这个问题上浪费了两个小时,并使用
解决了collectionView.contentInset = .init(top: 1, left: 15, bottom: 1, right: 15)
collectionView.scrollIndicatorInsets = .init(top: 1, left: 1, bottom: 1, right: 1)