我有一张图片,我试图掩盖一个圆圈,使图像显示为圆形。这有点起作用,但圆圈位于顶部和底部的一个点上。
profileImageView.layer.cornerRadius = profileImageView.frame.size.width/2;
profileImageView.layer.masksToBounds = YES;
这段代码应该画出一个完美的圆圈吗?它似乎在一个地方画了一个圆圈,但是在另外两个地方,它不能正常工作。
答案 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可能也不会给你一个完全适合整数点的半径,因为它们被映射到屏幕上的像素。
如果你想要的是一个圆形的面具,为这个图层提供一个实际面具是实际圆,那真的会更好。在你做的时候滥用角落半径只是懒惰(而且,正如你发现的那样,它很容易出错)。