【问题标题】:Corner radius to superview subview UIView not shown未显示超级视图子视图 UIView 的角半径
【发布时间】: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 的边界

标签: ios swift uiview storyboard cornerradius


【解决方案1】:

您应该将绿色视图移出背景视图,因为您正在设置cornerRadius。你的绿色视图可以有 centerY 约束等于你的 backgroundViews 底部。为了实现这一点,您可以首先定义它们之间的垂直间距,然后将该约束第一项编辑为 centerY

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多