无法在 iOS 中设置 UIView 的底部阴影?
Posted
技术标签:
【中文标题】无法在 iOS 中设置 UIView 的底部阴影?【英文标题】:Unable to set bottom shadow of UIView in iOS? 【发布时间】:2017-05-02 09:04:51 【问题描述】:我想设置 UIView 的底部阴影。我也在设置圆角半径。如果我将 maskToBounds 设置为 true 那么我无法设置UIView 请告诉我如何设置 UIView 的角半径和阴影。
func addShadwToView()
self.viewContainer.layer.masksToBounds = true;
self.viewContainer.layer.shadowRadius = 15;
self.viewContainer.layer.shadowOffset = CGSize(width: 0, height: 20)
self.viewContainer.layer.shadowOpacity = 0.5;
self.viewContainer.layer.cornerRadius = 5
self.viewContainer.layer.borderColor = UIColor.lightGray.cgColor
self.viewContainer.layer.borderWidth = 0.5
【问题讨论】:
确保任何其他视图没有重叠在上面。否则代码没有任何问题。shadowColor
在哪里?
【参考方案1】:
如果你想要一个圆角半径和一个投影,所以不要打开-masksToBounds,而是设置圆角半径并用圆角矩形设置阴影的贝塞尔路径。保持两者的半径相同: 试试看:
func addShadwToView()
var borderLine = CAShapeLayer()
borderLine.path = UIBezierPath(roundedRect: frame2, byRoundingCorners: [.allCorners], cornerRadii: CGSize(width: 30, height: 0)).cgPath
borderLine.shadowColor = UIColor.white.cgColor
borderLine.shadowOffset = CGSize(width: 0, height: 1)
borderLine.shadowOpacity = 0.3
borderLine.shadowRadius = 10
self.viewContainer.layer.masksToBounds = true;
self.viewContainer.layer.cornerRadius = 5
self.viewContainer.layer.borderColor = UIColor.lightGray.cgColor
self.viewContainer.layer.borderWidth = 0.5
self.viewContainer.layer.addSublayer(borderLine)
【讨论】:
【参考方案2】:试试这个代码...这将解决你的问题
func addShadow()
let shadowPath = UIBezierPath(rect: CGRect(x: 0, y: 0, width: customView.frame.width, height: customView.frame.height))
customView.layer.shadowColor = UIColor.lightGray.cgColor
customView.layer.shadowOffset = CGSize(width: 0, height: 20)
customView.layer.shadowOpacity = 0.5
customView.layer.shadowRadius = 15
customView.layer.masksToBounds = false
customView.layer.shadowPath = shadowPath.cgPath
【讨论】:
以上是关于无法在 iOS 中设置 UIView 的底部阴影?的主要内容,如果未能解决你的问题,请参考以下文章
无法在 iOS 13 中设置 UITabBar shadowimage
iOS:如何获取刚刚在界面生成器中设置的 UIView 的框架
如何在 ios Swift 的 UIView 中左右设置阴影?