试图掩盖图像周围的圆圈不起作用

时间:2015-07-23 19:21:30

标签: ios uiimageview mask cornerradius

我有一张图片,我试图掩盖一个圆圈,使图像显示为圆形。这有点起作用,但圆圈位于顶部和底部的一个点上。

profileImageView.layer.cornerRadius = profileImageView.frame.size.width/2;
profileImageView.layer.masksToBounds = YES;

这段代码应该画出一个完美的圆圈吗?它似乎在一个地方画了一个圆圈,但是在另外两个地方,它不能正常工作。

2 个答案:

答案 0 :(得分:2)

我使用CAShapeLayer

屏蔽了图像视图的效果最佳
CGFloat radius = self.profileImageView.frame.size.width / 2.0;
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(radius, radius) radius:radius startAngle:0 endAngle:M_PI * 2.0 clockwise:TRUE];
CAShapeLayer *layer = [CAShapeLayer layer];
layer.path = path.CGPath;
layer.lineWidth = 0;
self.profileImageView.layer.mask = layer;

答案 1 :(得分:1)

  

这段代码应该画出一个完美的圆圈吗?

不一定。毕竟,这个层的宽度和高度可能不一样。即使它们是2,除以2可能也不会给你一个完全适合整数点的半径,因为它们被映射到屏幕上的像素。

如果你想要的是一个圆形的面具,为这个图层提供一个实际面具是实际圆,那真的会更好。在你做的时候滥用角落半径只是懒惰(而且,正如你发现的那样,它很容易出错)。