Swift: 同时给View添加阴影 渐变色 圆角
2019-12-06 本文已影响0人
琪一可
因为渐变色是在view.layer上面添加了CAGradientLayer, 所以应该是给这个layer添加圆角和阴影,而不是view
⚠️而阴影能出来的条件是 clipsToBounds = false,layer.masksToBounds= false.
override func layoutSubviews() {
super.layoutSubviews()
let gradient = CAGradientLayer()
gradient.colors = [UIColor.darkBlue.cgColor, UIColor.lightBlue.cgColor]
gradient.frame = frame
gradient.startPoint = CGPoint(x: 0, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 0)
gradient.shadowColor = UIColor.blue.cgColor
gradient.shadowOffset = CGSize(width: 0, height: 0)
gradient.shadowOpacity = 0.8
gradient.shadowRadius = 10
gradient.cornerRadius = frontView.bounds.height * 0.5
layer.insertSublayer(gradient, at: 0)
}
如果视图的阴影颜色有变化 记得移除之前的layer
/// 避免重复添加的时候 颜色不更新
layer.sublayers?.forEach({ obj in
if obj.isKind(of: CAGradientLayer.self) {
obj.removeFromSuperlayer()
}
})
⚠️同时添加圆角和阴影的时候
对tableview注意 clipsToBounds= true才行 不然超出的cell会有奇怪的bug
这时候建议tableview后面添加一个view,用来显示阴影.或者圆角等.