如何在表格视图单元格中的视图内设置视图的角半径?

Posted

技术标签:

【中文标题】如何在表格视图单元格中的视图内设置视图的角半径?【英文标题】:How to set corner radius of a view inside a view in tableview cell? 【发布时间】:2018-03-06 09:25:38 【问题描述】:

我是 ios 新手,遇到了这个问题。我正在创建一个这样的自定义单元格

我在主视图内拍摄了一个矩形视图(左侧)。这是设置两个视图的圆角半径的代码。

_viewBG.layer.cornerRadius = 10.0;
_viewBG.layer.shadowOpacity = 0.5;
_viewBG.layer.shadowOffset = CGSizeMake(-1, 1);
_viewBG.layer.borderWidth = 0.5;
_viewBG.layer.borderColor = [[UIColor lightGrayColor] CGColor];

UIBezierPath *maskPath = [UIBezierPath
                          bezierPathWithRoundedRect:self.viewLeft.bounds
                          byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerBottomLeft)
                          cornerRadii:CGSizeMake(10, 10)
                          ];

CAShapeLayer *maskLayer = [CAShapeLayer layer];

maskLayer.frame = self.bounds;
maskLayer.path = maskPath.CGPath;

self.viewLeft.layer.mask = maskLayer;

但是我得到了这个输出..

所以我想根据主视图设置红色 uiview 的圆角半径......任何想法都将不胜感激。你能帮忙吗?

【问题讨论】:

【参考方案1】:

步骤:

    制作一个包含左右视图的主包装视图。将其背景颜色设置为透明色。

    在主包装视图内添加另一个视图,并根据需要为其指定角半径并掩码绑定为 true

    在步骤 2 中创建的此子视图中,将您的红色和另一个具有属性 clip 的视图添加到边界 true

    现在在主 wrapperview 中将阴影和蒙版设置为 false

【讨论】:

好的,我会尽力让你知道的。谢谢 优雅的解决方案.. 谢谢 Ashwin 先生! 总是很高兴..乐于助人:)【参考方案2】:

只需设置单元格的clipToBounds = true

在您的情况下,它将是 _viewBG.clipToBounds = true

要使阴影可见,请使用_viewBG.layer.maskToBounds = false

【讨论】:

但是使用您的解决方案,主视图周围的阴影会丢失...您猜猜为什么? 如果它解决了你的问题,那么接受这个答案,这样它对其他人也有帮助......:) 没有解决。当我设置 _viewBG.layer.maskToBounds = false 时,它​​会出现阴影,但带有我的旧输出。 :(

以上是关于如何在表格视图单元格中的视图内设置视图的角半径?的主要内容,如果未能解决你的问题,请参考以下文章

如何为一些子成员设置卡片视图的角半径?

每个拐角不同的拐角半径,扩展 TableView 单元格视图

如何为自定义表格视图单元格中的按钮单击获取不同的视图控制器

自定义表格单元格中的堆栈视图

如何以编程方式删除表格视图单元格中的 UIView?

表格视图单元格中的自增长标签