如何在iOS中使子视图成为圆角作为超级视图?
Posted
技术标签:
【中文标题】如何在iOS中使子视图成为圆角作为超级视图?【英文标题】:How to make sub view to be round corner as super view in iOS? 【发布时间】:2018-12-18 02:41:08 【问题描述】:我已使用以下方法将视图(浅灰色)设置为圆角:
layer.masksToBounds = false
layer.cornerRadius = 10
它工作正常。但是当添加子视图(深灰色)时,该子视图不像其超级视图那样是圆形的。 如何使子视图成为圆角作为超级视图?
【问题讨论】:
【参考方案1】:请在添加子视图时将masksToBounds
设置为true
,
subView.masksToBounds = true
【讨论】:
尝试添加clipToBounds = true
【参考方案2】:
尝试将cornerRadius
也添加到子视图中。
subview.layer.masksToBounds = false
subview.layer.cornerRadius = 10
更新
通过使用UIBezierPath
,我们可以为任何我们想要的角添加圆度。
subview.roundCorners([.topLeft, .topRight, .bottomRight], radius: 6)
扩展
extension UIView
func roundCorners(_ corners: UIRectCorner, radius: CGFloat)
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
【讨论】:
如果这样,子视图将环绕所有四个角。我想要的只是子视图的右上角和左上角。 请检查更新以增加子视图顶角的圆度 那很好。这是解决方案之一。让我们看看有没有办法让子视图角落依赖于超级视图。以上是关于如何在iOS中使子视图成为圆角作为超级视图?的主要内容,如果未能解决你的问题,请参考以下文章