圆形ImageView以钻石形式出现

时间:2015-12-28 04:47:46

标签: ios swift

我正在尝试让我的imageView成为一个圆圈,但它仍然以钻石形式出现。我认为这段代码可行,但事实并非如此:

profilePic.layer.cornerRadius = profilePic.frame.width / 2
    profilePic.clipsToBounds = true

5 个答案:

答案 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方法中使用相同的代码。实际上,根据视图生命周期,方法按以下方式执行:initloadViewviewDidLoadviewWillAppearviewWillLayoutSubViews,然后应用自动布局约束(你拥有的自动布局约束的数量,这个布局方法被调用的时间很长),viewDidLayoutSubviews和最后viewDidAppear

根据您的问题,在应用自动布局约束之前,您会将代码放在任何方法中。这就是为什么,你没有获得适当的视图宽度,而是转向钻石而不是圆形。