我的UIImageView
似乎没有圆角工具滚动或重新加载集合视图(collectionView.reloadData()
)。
它的外观如下:
单元格有多个图像视图,所有这些视图都被约束为facesContainer
UIView约束。
我尝试在collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath)
内部实现此代码:
cell.facesContainer.layer.cornerRadius = (cell.facesContainer.layer.frame.width/2)
cell.facesGroupImageView.layer.cornerRadius = (cell.facesGroupImageView.layer.frame.width/2)
cell.facesGroupImageView.layer.masksToBounds = true
cell.facesGroupImageView.layer.borderColor = UIColor.black.cgColor
cell.facesGroupImageView.layer.borderWidth = 0.5
另外,我尝试在awakeFromNib()
方法的自定义单元格类中添加上面的代码段,但它不起作用。
为什么它不起作用?如何解决?
答案 0 :(得分:0)
在返回单元格之前尝试调用它:
cell.layoutIfNeeded()
答案 1 :(得分:0)
在viewWillLayoutSubviews中设置半径将解决问题。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
profileImageView.layer.cornerRadius = profileImageView.frame.height / 2.0
}
答案 2 :(得分:0)
我认为您应该将代码放在其中:
DispatchQueue.main.async {
// your view configurations
}
答案 3 :(得分:-1)
试试这个:
在延迟0.5秒后再次拨打realoadData()
。这肯定会奏效。
collectionView.reloadData()
cell.layoutIfNeeded()
collectionView.perform(#selector(collectionView.reloadData), with: nil, afterDelay: 0.5)
或覆盖tableview单元格类中的布局子视图;
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
self.facesContainer.layer.cornerRadius = (self.facesContainer.layer.frame.width/2)
self.facesGroupImageView.layer.cornerRadius = (self.facesGroupImageView.layer.frame.width/2)
}