试图遮盖图像周围的圆圈不起作用
Attempting to mask a circle around an image not working
我有一张图片,我试图在周围遮盖一个圆圈,使图片看起来是圆形的。这有点管用,但圆圈在顶部和底部到达一个点。
profileImageView.layer.cornerRadius = profileImageView.frame.size.width/2;
profileImageView.layer.masksToBounds = YES;
这段代码应该画一个正圆吗?好像在一个地方画了一个圆圈,但是在其他两个地方,它不能正常工作。
Should this code be drawing a perfect circle?
不一定。毕竟,这一层的宽度和高度可能不一样。即使它们是,除以 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;
我有一张图片,我试图在周围遮盖一个圆圈,使图片看起来是圆形的。这有点管用,但圆圈在顶部和底部到达一个点。
profileImageView.layer.cornerRadius = profileImageView.frame.size.width/2;
profileImageView.layer.masksToBounds = YES;
这段代码应该画一个正圆吗?好像在一个地方画了一个圆圈,但是在其他两个地方,它不能正常工作。
Should this code be drawing a perfect circle?
不一定。毕竟,这一层的宽度和高度可能不一样。即使它们是,除以 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;