在UICollectionViewCell中使用舍入的UIImageViews的错误

时间:2015-09-27 14:33:09

标签: ios xcode swift uiimageview uicollectionviewcell

所以今天我正在尝试收集视图并遇到了一个非常有趣的错误。

错误是我拥有的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

    }
}

关于这可能是什么的任何想法?

更新---以下是正在发生的事情的图片

在: enter image description here

在: enter image description here

2 个答案:

答案 0 :(得分:0)

我认为这与您在方法layoutSubview中设置imageView的边框有关,在不同情况下,在单元格的提升周期内将多次调用该边框。

如果使用xib或故事板初始化单元格,请在initWithFrame中设置imageView&#39}的边框。而是在awakeFromNib中进行。或者以更快速的方式来做这样的

@IBOutlet var avatar: UIImageView! {
        didSet {
            avatar.clipsToBounds = true
            avatar.layer.cornerRadius = 37.5
        }
    }

答案 1 :(得分:0)

我回答a similar question here

首先,我会打电话给超级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];
}