在一個自定義的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