UITableViewCell中的UIImage圈

时间:2018-02-14 11:35:05

标签: ios objective-c uitableview

所以我遵循将图像变成圆形的正常方法:

   image.layer.cornerRadius = image.frame.size.width/2.0f;
    image.layer.borderColor = [UIColor blackColor].CGColor;
    image.layer.borderWidth = 2;
    image.clipsToBounds = YES ;

然而,当我在细胞中使用它时,它第一次显示在Simi完美的圆圈中,但是当我滚动显示新细胞时,所有细胞都将呈现完美的圆形。
所以我的问题是:为什么第一个可见细胞出现在Simi-cirlce形状中? enter image description here 这是第一次看起来的样子,但如果我刷新或重新加载页面,一切都很好

2 个答案:

答案 0 :(得分:3)

尝试使用这种方式

就像自定义单元格类

一样
class ProfilePicCell: UITableViewCell {

    @IBOutlet weak var image: UIImageView!

    override func awakeFromNib() {
        super.awakeFromNib()
        image.layer.cornerRadius =  image.frame.width / 2
        image.layer.masksToBounds = true
    }
}
目标C 中的

在自定义单元格类

中添加此方法
- (void)awakeFromNib
{
 super.awakeFromNib()

 image.layer.cornerRadius =  image.frame.width / 2
}

答案 1 :(得分:3)

覆盖单元格中的layoutSubviews,并在调用super.layoutSubviews后更新image.layer.cornerRadius。然后,当单元格可见后更新单元格的布局时,角点半径将相应更新。

因此,在快速实施中,您可以执行以下操作:

override func layoutSubviews() {
    super.layoutSubviews()

    // now the frames were recalculated, and we can update cornerRadius
    image.layer.cornerRadius = image.bounds.size.width / 2.0
}