创建 100% 圆形 UIView/UIImageview

Posted

技术标签:

【中文标题】创建 100% 圆形 UIView/UIImageview【英文标题】:Creating 100% round UIView/UIImageview 【发布时间】:2016-07-01 03:01:34 【问题描述】:

我打算用下面几行代码来添加一个“圆视图”:

_myBackView = [[UIView alloc] initWithFrame:rect];
_myBackView.backgroundColor = [UIColor colorWithR:153 G:85 B:57 alpha:1.0];
_myBackView.layer.cornerRadius = artworkViewWidth / 2;
_myBackView.layer.masksToBounds = YES;
_myBackView.layer.borderWidth = 0;
_myBackView.clipsToBounds = NO;
[self.view addSubview:_myBackView];

视图创建得很好,看起来大多是圆形的。但问题是它似乎不是“100% 圆形”——虽然我将 clipsToBounds 属性设置为 NO,但四个边缘似乎仍然有些剪裁。

任何指导将不胜感激。

编辑:刚刚添加了复制图片。请注意被剪裁的 4 个边缘。

【问题讨论】:

将有助于获得您正在测试的图像。另外,图片是正方形吗? 请包括rect 的计算。该矩形必须具有width==artworkViewWidth 才能使角半径正确。如果是这样,视图将形成一个完美的圆圈。 @CodeBender 感谢您的回复。我已经包括了屏幕截图。我还没有在这里直接显示图像,而只是直接用 UIView 测试cornerRadius 的东西。 【参考方案1】:

你可以试试这个(使用圆形 png 遮罩层)

- (void)useMaskFor: (UIView*)colorArea 

    CALayer *maskLayer = [CALayer layer];
    maskLayer.frame = colorArea.bounds;
    UIImage *maskImage = [UIImage imageNamed:@"cirMask.png"];
    maskLayer.contents = (__bridge id)maskImage.CGImage;
    colorArea.layer.mask = maskLayer;

从这个How to draw a custom UIView that is just a circle - iPhone app回答

【讨论】:

【参考方案2】:
 _image.layer.cornerRadius = _image.frame.size.height/2;

 _image.layer.masksToBounds = YES;

试试上面的代码。

【讨论】:

以上是关于创建 100% 圆形 UIView/UIImageview的主要内容,如果未能解决你的问题,请参考以下文章

模糊边缘不断恢复 100% 不透明度(处理中)

CSS 还是 jQuery?如何根据具有灵活大小的容器获得圆形? [复制]

不允许在 Circular Slider iOS 中从 1% 滑动到 100%,反之亦然

border-radius:50%和100%究竟有什么区别

border-radius:50%和100%究竟有什么区别

Google Chrome 圆形进度条