所以今天我正在尝试收集视图并遇到了一个非常有趣的错误。
错误是我拥有的imageView圈子永远不会完美,除非我将它们从屏幕上滚动。它们的形状类似于圆形边缘的菱形。
在我再次向上滚动以使顶部细胞暂时不在视线之外时,看不见的细胞现在是完美的圆圈。
这是我的细胞类代码:
class FavouritesCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var profilePicutreImageView: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
override var bounds: CGRect {
didSet {
contentView.frame = bounds
}
}
override func layoutSubviews() {
profilePicutreImageView.layer.borderWidth = 2.0
profilePicutreImageView.layer.masksToBounds = false
profilePicutreImageView.layer.cornerRadius = profilePicutreImageView.frame.width/2
profilePicutreImageView.layer.borderColor = UIColor.blackColor().CGColor
profilePicutreImageView.clipsToBounds = true
}
}
关于这可能是什么的任何想法?
更新---以下是正在发生的事情的图片
答案 0 :(得分:0)
我认为这与您在方法layoutSubview
中设置imageView的边框有关,在不同情况下,在单元格的提升周期内将多次调用该边框。
如果使用xib或故事板初始化单元格,请在initWithFrame
中设置imageView&#39}的边框。而是在awakeFromNib
中进行。或者以更快速的方式来做这样的
@IBOutlet var avatar: UIImageView! {
didSet {
avatar.clipsToBounds = true
avatar.layer.cornerRadius = 37.5
}
}
答案 1 :(得分:0)
首先,我会打电话给超级layoutSubviews
。之后,在将数据绑定到单元格时调用layoutIfNeeded
:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
UICollectionViewCell*cell = ...
// Do your stuff here to configure the cell
// Tell the cell to redraw its contentView
[cell layoutIfNeeded];
}