UITableViewCell中設置動態大小的圓形imageview

在一個自定義的UITableViewCell裏有一個imageview須要顯示成圓形,由於它的寬高是autolayout動態設置的,因此不能在xib中設置layer.cornerRadius。因而我就在awakeFromNib中設置layer.cornerRadius與layer.masksToBounds的,測試發現iPhone6下沒有問題,可是在iPhone5下顯示不對。在awakeFromNib中打印imageview的frame,發現width與height仍是xib中的原始值,這樣顯然是有問題的。api

很明顯,我須要的是在UITableViewCell的autolayout完成以後imageview的frame,不過發現沒有相關的api來實現,最後用下面的代碼實現了:iview

- (void)layoutSubviews {
    [super layoutSubviews];
    
    [self layoutIfNeeded];
    _imageviewAvantar.layer.cornerRadius = _imageviewAvantar.width / 2;
    _imageviewAvantar.layer.masksToBounds = YES;
}


也許另外一個辦法是寫一個UIImageView的subclass,在它的layoutSubviews裏修改layer.cornerRadius測試

參考:How to combine Auto Layout constraints with contentMode property of UIViewui

相關文章
相關標籤/搜索