为啥 UIImageView 在滚动之前不显示四舍五入?
Posted
技术标签:
【中文标题】为啥 UIImageView 在滚动之前不显示四舍五入?【英文标题】:Why UIImageView doesn't display rounded until scrolling?为什么 UIImageView 在滚动之前不显示四舍五入? 【发布时间】:2017-08-03 15:06:30 【问题描述】:我的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()
方法中添加上面的代码 sn-p,但它不起作用。
为什么它不起作用?如何解决?
【问题讨论】:
你在 willdisplaycell 方法中尝试过吗awakeFromNib
中不存在约束。
看看这个帖子-解释和解决方法:***.com/questions/32362934/…
【参考方案1】:
我认为你应该把你的代码放在这个里面:
DispatchQueue.main.async
// your view configurations
【讨论】:
【参考方案2】:在 viewWillLayoutSubviews 中设置半径即可解决问题。
override func viewWillLayoutSubviews()
super.viewWillLayoutSubviews()
profileImageView.layer.cornerRadius = profileImageView.frame.height / 2.0
【讨论】:
以上是关于为啥 UIImageView 在滚动之前不显示四舍五入?的主要内容,如果未能解决你的问题,请参考以下文章
对于自定义 UITableViewCell 中的大图像,为啥 drawRect 滚动比 UIImageView 慢
UIImageView 在滚动之前不会加载到 UITableViewCell 中
在 tableview 单元格中将图像设置为 UIImageView 会使滚动和旋转变慢