【问题标题】:Unable to set bottom shadow of UIView in iOS?无法在 iOS 中设置 UIView 的底部阴影?
【发布时间】:2017-05-02 09:04:51
【问题描述】:

我想设置 UIView 的底部阴影。我也在设置圆角半径。如果我将 ma​​skToBounds 设置为 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在哪里?

标签: ios swift xcode uiview


【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 2023-01-29
      • 2014-06-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      相关资源
      最近更新 更多