在Swift中如何将图片变成圆形?

6

我正在尝试将图片变成圆形,但是以下代码却创建了一个菱形状的照片:

    profilePicture.layer.cornerRadius = profilePicture.frame.size.width / 2
    profilePicture.clipsToBounds = true

如何使它变成圆形?谢谢!


代码是完美的,只需完美设置您的视图约束,编译器就可以找到ProfilePicture的宽度。 - Ashish Kakkad
1
https://dev59.com/zV0b5IYBdhLWcg3wCtTY#29685559 - Leo Dabus
@AshishKakkad 如果我说的听起来很傻,请原谅,我对这一切都很新!您所说的“完美地”设置约束条件是什么意思?我有约束条件,只是不确定您所说的“完美”是什么意思。 - Kody R.
@LeoDabus 非常好!感谢您的扩展,使它变得更容易了一些。 - Kody R.
@KodyR。欢迎您。 - Leo Dabus
显示剩余2条评论
4个回答

3
你可能漏了些东西,下面的代码对我有效:

你可能漏了些东西,以下代码对我有效:

            profilePicture.layer.borderWidth=1.0
            profilePicture.layer.masksToBounds = false
            profilePicture.layer.borderColor = UIColor.whiteColor().CGColor
            profilePicture.layer.cornerRadius = profilePicture.frame.size.height/2
            profilePicture.clipsToBounds = true

注意:为了获得完美的圆形,图像视图框架应该是正方形。

3
因为在视图大小改变之前,您设置了cornerRadius,所以它显示出菱形。
这将导致出现菱形形状:
var myView = UIView(frame: CGRect(x: 10, y: 10, width: 100, height: 100))
myView.backgroundColor = UIColor.redColor()
view.addSubview(myView)
myView.layer.cornerRadius = myView.frame.size.width / 2
// setting frame doesn't change corner radius from the former large value
myView.frame = CGRect(x: 50, y: 50, width: 50, height: 50)

您可以在 viewWillAppear: 中进行设置,在视图显示之前立即执行此操作。


就是这样!我把它放在了viewDidAppear里面,所以你的评论很有道理。谢谢! - Kody R.

0

你可以试试这个方法,它对我很有效。我只是在命令前面加了一个 self.

    self.profilePicture.frame.size.width / 2;
    self.profilePicture.clipsToBounds = true;

希望它能正常工作 :)


0
要将任何UIImageview变成圆形,您需要首先将其框架设置为正方形。例如,如果您的UIImageView框架是(20,20,100,100),则其高度和宽度相同。然后,您需要将那个UIImageviewcornerradius属性设置为其HeightWidth大小的一半
我在Xamarin.iOS中做了类似于此的事情:-
 imageView.Layer.CornerRadius = imageView.Frame.Size.Width / 2;
 imageView.ClipsToBounds = true; 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接