在情节提要中,我对UIImageView应用了高度和宽度的乘数,然后我只想对边框进行四舍五入,因此我在下面的代码中不适用于所有iPhone。
_profileImgView.clipsToBounds = YES;
_profileImgView.layer.backgroundColor = color.CGColor;
_profileImgView.layer.cornerRadius =_profileImgView.frame.size.width/2;
_profileImgView.layer.borderColor = [UIColor colorWithRed:253.0/255.0 green:182.0/255.0 blue:43.0/255.0 alpha:100].CGColor;
_profileImgView.layer.borderWidth = 5.0f;
答案 0 :(得分:1)
由于拐角半径取决于帧大小,因此,只要帧大小发生变化,就需要对其进行更新。如果您在设计中使用情节提要板,则在调用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
答案 1 :(得分:0)
在相同的Viewcontroller类中实现此代码对我来说很有用
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
_profileImgView.clipsToBounds = YES;
_profileImgView.layer.backgroundColor = color.CGColor;
_profileImgView.layer.cornerRadius =_profileImgView.frame.size.width/2;
_profileImgView.layer.borderColor = [UIColor colorWithRed:253.0/255.0 green:182.0/255.0 blue:43.0/255.0 alpha:100].CGColor;
_profileImgView.layer.borderWidth = 5.0f;
}