如何使用阴影视图 iOS swift 实现这种角半径?
How can i achieve this kind of corner redius with shadow view iOS swift?
我正在尝试制作一个左上角半径和右下角半径带阴影的设计。当我试图将角半径仅提供给侧阴影或半径未显示时,我能够在 view.But 周围制作阴影也角半径。野兔我做了什么
extension UIview {
//corner radius function
func roundCornersForView(corners:UIRectCorner, radius: CGFloat) {
DispatchQueue.main.async {
let path = UIBezierPath(roundedRect: self.bounds,
byRoundingCorners: corners,
cornerRadii: CGSize(width: radius, height: radius))
let maskLayer = CAShapeLayer()
maskLayer.frame = self.bounds
maskLayer.path = path.cgPath
self.layer.mask = maskLayer
}
}
func setShadow(){
self.layer.masksToBounds = false
// set the shadow properties
self.layer.shadowColor = UIColor.black.cgColor
self.layer.shadowOffset = CGSize(width: 0, height: 1.0)
self.layer.shadowOpacity = 0.2
self.layer.shadowRadius = 4.0
self.roundCornersForView(corners: [.topLeft, .bottomRight], radius: 20)
}
}
/// finally call it table cell
cell?.BackView.setShadow()
here is the design what i want to do
1) 为什么要编写一个单独的函数来绘制矩形,然后将 cornerRadius 掩码应用于您的视图?将函数的内容替换为:
yourView.layer.masksToBounds = true
yourView.layer.cornerRadius = 20
yourView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMaxYCorner]
2) 遮罩视图的角并将其 masksToBounds
属性 设置为 true
后,您可以将阴影设置到视图的图层,它会自动环绕圆角如你所愿:-
yourView.layer.shadowOffset = CGSize(width: 0, height: -0.5)
yourView.layer.shadowRadius = 1
yourView.layer.shadowColor = UIColor(red:0.01, green:0.05, blue:0.09, alpha:0.18).cgColor
yourView.layer.shadowOpacity = 0.8
3) 建议在单元格 class 的 awakeFromNib()
或 init()
方法而不是在你的委托方法中,因为它们被调用了很多次,因此 打破了可重用性的全部要点
已经测试了应用阴影的代码,对我来说效果很好。希望这对您有所帮助!
我正在尝试制作一个左上角半径和右下角半径带阴影的设计。当我试图将角半径仅提供给侧阴影或半径未显示时,我能够在 view.But 周围制作阴影也角半径。野兔我做了什么
extension UIview {
//corner radius function
func roundCornersForView(corners:UIRectCorner, radius: CGFloat) {
DispatchQueue.main.async {
let path = UIBezierPath(roundedRect: self.bounds,
byRoundingCorners: corners,
cornerRadii: CGSize(width: radius, height: radius))
let maskLayer = CAShapeLayer()
maskLayer.frame = self.bounds
maskLayer.path = path.cgPath
self.layer.mask = maskLayer
}
}
func setShadow(){
self.layer.masksToBounds = false
// set the shadow properties
self.layer.shadowColor = UIColor.black.cgColor
self.layer.shadowOffset = CGSize(width: 0, height: 1.0)
self.layer.shadowOpacity = 0.2
self.layer.shadowRadius = 4.0
self.roundCornersForView(corners: [.topLeft, .bottomRight], radius: 20)
}
}
/// finally call it table cell
cell?.BackView.setShadow()
here is the design what i want to do
1) 为什么要编写一个单独的函数来绘制矩形,然后将 cornerRadius 掩码应用于您的视图?将函数的内容替换为:
yourView.layer.masksToBounds = true
yourView.layer.cornerRadius = 20
yourView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMaxYCorner]
2) 遮罩视图的角并将其 masksToBounds
属性 设置为 true
后,您可以将阴影设置到视图的图层,它会自动环绕圆角如你所愿:-
yourView.layer.shadowOffset = CGSize(width: 0, height: -0.5)
yourView.layer.shadowRadius = 1
yourView.layer.shadowColor = UIColor(red:0.01, green:0.05, blue:0.09, alpha:0.18).cgColor
yourView.layer.shadowOpacity = 0.8
3) 建议在单元格 class 的 awakeFromNib()
或 init()
方法而不是在你的委托方法中,因为它们被调用了很多次,因此 打破了可重用性的全部要点
已经测试了应用阴影的代码,对我来说效果很好。希望这对您有所帮助!