Так как ваш угловой радиус зависит от размера вашего кадра, вам необходимо обновлять его при каждом изменении размера кадра.Если вы используете раскадровки для своего дизайна, вы получите размер кадра в дизайне при вызове viewDidLoad
.Если размер кадра отличается для разных устройств, вы получите окончательный размер в более поздний момент времени в представлениях layoutSubviews
или, возможно, в контроллере представления viewDidLayoutSubviews
.
Мое предлагаемое решение заключается в подклассеUIImageView
и поместите специфику для представления изображения в awakeFromNib
и layoutSubviews
, затем используйте этот класс вместо UIImageView там, где это необходимо.
// CircularImageView.h
#import <UIKit/UIKit.h>
@interface CircularImageView : UIImageView
@end
// CircularImageView.m
@implementation CircularImageView
- (void)awakeFromNib {
[super awakeFromNib];
self.clipsToBounds = YES;
self.layer.borderColor = [UIColor colorWithRed:253.0/255.0 green:182.0/255.0 blue:43.0/255.0 alpha:100].CGColor;
self.layer.borderWidth = 5.0f;
}
- (void)layoutSubviews {
[super layoutSubviews];
self.layer.cornerRadius = self.frame.size.width / 2;
}
@end