这是我的布局,我将UIButton添加到UIVut,并设置其背景。
我正在尝试将其设置为圆形,因此cornerRadius必须为height / 2.
- (void)viewDidLoad
{
[self initView];
[super viewDidLoad];
}
- (void)initView {
NSLog(@"%@", NSStringFromCGRect(self.userHeadImageButton.frame));
//头像圆角
CGFloat width = self.userHeadImageButton.frame.size.width;
self.userHeadImageButton.layer.masksToBounds = YES;
self.userHeadImageButton.layer.cornerRadius = width/2;
// self.userHeadImageButton.layer.cornerRadius = 64;
}
UIButton的框架应该是{{136,84},{128,128}}。它应该成为一个圆圈。
但是日志是[13821:81357] {{-23, -15}, {46, 30}}
,效果是一个cornerRadius,而不是一个圆圈。
我不知道发生了什么事。任何人都可以帮助我,谢谢
答案 0 :(得分:1)
问题在于,当调用viewDidLoad
时,不会评估自动布局约束以确定屏幕上视图的确切位置和大小,这就是为什么按钮会有一些古怪的位置/大小值。
如果您在视图控制器中使用以下内容实现viewDidLayoutSubviews
,希望您能看到圆形图像。
- (void)viewDidLayoutSubviews {
CGFloat width = self.userHeadImageButton.frame.size.width;
self.userHeadImageButton.layer.cornerRadius = width / 2;
}
答案 1 :(得分:0)
如果您只想使用StoryBoard而不是其他方式,也不需要管理视图lifeCycle
只需添加两个用户定义的运行时属性
带有类型编号的layer.cornerRadius并放置按钮高度的一半! layer.masksToBounds为boolean YES
请确保只有按钮高度固定时才能执行