我正在尝试让我的imageView成为一个圆圈,但它仍然以钻石形式出现。我认为这段代码可行,但事实并非如此:
profilePic.layer.cornerRadius = profilePic.frame.width / 2
profilePic.clipsToBounds = true
答案 0 :(得分:1)
在
中试用您的代码override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
profilePic.layer.cornerRadius = profilePic.frame.width / 2
profilePic.clipsToBounds = true
}
答案 1 :(得分:1)
您可能无法在每个设备中获得完美的圈子,请尝试将2.0
更改为不同的设备附近的值。
-(void)viewDidLoad {
self.profilePic.layer.cornerRadius = self.profilePic.frame.size.width / 2.0f;
self.profilePic.clipsToBounds = YES;
}
答案 2 :(得分:0)
通过将以下代码添加到init(coder aDecoder: NSCoder!)
手动实施destinationViewController
。
将您ImageView
初始化为
init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
profiePic = [[UIImageView alloc]init];
profilePic setFrame : CGRectMake ("Set Your Control's Frame here");
profilePic.layer.cornerRadius = profilePic.frame.width / 2
profilePic.clipsToBounds = true
}
你会得到你想要的结果。
答案 3 :(得分:0)
这对我有用
profilePicImageView.layer.cornerRadius = profilePicImageView.frame.size.height / 2
profilePicImageView.layer.masksToBounds = false
profilePicImageView.clipsToBounds = true
profilePicImageView.layer.borderWidth = 0
答案 4 :(得分:0)
在viewDidLayoutSubviews
方法或viewDidAppear
方法中使用相同的代码。实际上,根据视图生命周期,方法按以下方式执行:init
,loadView
,viewDidLoad
,viewWillAppear
,viewWillLayoutSubViews
,然后应用自动布局约束(你拥有的自动布局约束的数量,这个布局方法被调用的时间很长),viewDidLayoutSubviews
和最后viewDidAppear
。
根据您的问题,在应用自动布局约束之前,您会将代码放在任何方法中。这就是为什么,你没有获得适当的视图宽度,而是转向钻石而不是圆形。