为什么UIImageView在滚动之前不显示圆形?

时间:2017-08-03 15:06:31

标签: ios swift uicollectionview uicollectionviewcell cornerradius

我的UIImageView似乎没有圆角工具滚动或重新加载集合视图(collectionView.reloadData())。

它的外观如下:

  • 没有四舍五入

enter image description here

  • 使用舍入

enter image description here

单元格有多个图像视图,所有这些视图都被约束为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()方法的自定义单元格类中添加上面的代码段,但它不起作用。

为什么它不起作用?如何解决?

4 个答案:

答案 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)
}