Uiview自定义类触发阴影或Roundcorners/AddCornerradius,但并非在Swift 3中



uiview自定义类触发shadow。我想显示特定边缘的阴影和圆角。这是我的代码。任何建议都将不胜感激。

    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
    }
}
    class CustomView: UIView {
     override func layoutSubviews() {
            self.shadowColor = UIColor.darkGray
            self.shadowOffset = CGSize(width: 4, height: 4)
            self.shadowOpacity = 0.5
            self.shadowRadius = 6.0
            //only rounded corners triggered in UI
            self.backgroundColor = UIColor.white
            self.roundCorners(corners: [.topRight, .bottomRight], radius: 15.0)
        }
    }

预先感谢

对阴影和边框使用单独的视图。基本视图是透明的,具有阴影。边境视图剪辑了其边界的其他任何子符号。请参阅下面的代码。

//将阴影添加到基本视图

baseView.backgroundColor = UIColor.clear
baseView.layer.shadowColor = UIColor.black.cgColor
baseView.layer.shadowOffset = CGSize(width: 3, height: 3)
baseView.layer.shadowOpacity = 0.7
baseView.layer.shadowRadius = 4.0

//将边框添加到子视图

let borderView = UIView()
borderView.frame = baseView.bounds
borderView.layer.cornerRadius = 10
borderView.layer.borderColor = UIColor.black.cgColor
borderView.layer.borderWidth = 1.0
borderView.layer.masksToBounds = true
baseView.addSubview(borderView)

//添加您想要剪辑的任何其他子符号

let otherSubContent = UIImageView()
otherSubContent.image = UIImage(named: "lion")
otherSubContent.frame = borderView.bounds
borderView.addSubview(otherSubContent)

使用此功能: -

func addShadow(view: UIView, corner: CGFloat) {
    view.layer.shadowColor = UIColor.gray.cgColor
    view.layer.shadowOpacity = 0.5
    view.layer.shadowRadius = 2
    view.layer.shadowOffset = CGSize(width: 1, height: 1)
    view.layer.masksToBounds = false
    view.layer.cornerRadius = corner
}

最新更新