未显示超级视图子视图 UIView 的角半径
Posted
技术标签:
【中文标题】未显示超级视图子视图 UIView 的角半径【英文标题】:Corner radius to superview subview UIView not shown 【发布时间】:2020-09-23 07:23:31 【问题描述】:将UIView
of (50 height) 添加到superview,即UIView
50 % 保持在内部,剩余在superview 之外。
将圆角半径添加到superview后,bottomView的下半部分不显示。
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
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
bg_view.roundCorners([.bottomLeft, .bottomRight], radius: 20). // MainView
SearchView.bringSubviewToFront(bg_View)
这是故事板图片
【问题讨论】:
您能否添加不同颜色的故事板以避免任何潜在的混淆? @Rikh 也添加了故事板 下面的答案是解决您问题的最简单方法。CAShapeLayer
添加到 bg_view
上,并导致剪切出现在 bg_view
内但在应用的 CGPath
之外的所有内容,这是 bg_view
的边界
【参考方案1】:
您应该将绿色视图移出背景视图,因为您正在设置cornerRadius。你的绿色视图可以有 centerY 约束等于你的 backgroundViews 底部。为了实现这一点,您可以首先定义它们之间的垂直间距,然后将该约束第一项编辑为 centerY
【讨论】:
以上是关于未显示超级视图子视图 UIView 的角半径的主要内容,如果未能解决你的问题,请参考以下文章