阴影不会显示在UIView上

4 shadow uiviewcontroller uiview ios swift

我有一个ViewController,在该控制器中有两个UIViews.

我想在第二个UIView上显示的第一个UIView阴影的底部添加.

first UIView

-------------
              <- shadow here
secondUIView
Run Code Online (Sandbox Code Playgroud)

但是,当我只是添加这个代码时,它无法正常工作.

 firstView.layer.masksToBounds = true
 firstView.layer.shadowOffset = CGSizeMake(0,5)
 firstView.layer.shadowOpacity = 0.5
 firstView.layer.shadowPath = UIBezierPath(rect: firstView.bounds).CGPath
Run Code Online (Sandbox Code Playgroud)

小智 15

如果设置maskToBoundsfalse,则应显示阴影.

firstView.layer.masksToBounds = false
Run Code Online (Sandbox Code Playgroud)

如果masksToBounds属性是true,则视图边界之外的任何内容都将被剪切到这些边界.

  • @ThirdMartian 这很可能为时已晚,但对于未来的那些,`firstView.clipsToBounds = false` 也是必要的,以防万一之前设置为 `true`。 (2认同)

Mic*_*chK 6

如果你有两个视图view1,view2并且view2就在下面,view1它可能会view2覆盖阴影view1.在view2以后添加为子视图时会发生这种情况view1.

在某些时候view1添加view2或调用后添加为子视图[superview bringSubviewToFront:view1].

  • 这么简单的问题,一旦我读到这里就很明显了。谢谢。 (2认同)

Sah*_*vda 6

斯威夫特 4.2

extension UIView {
    
    public func addShadowToView(shadow_color: UIColor,offset: CGSize,shadow_radius: CGFloat,shadow_opacity: Float,corner_radius: CGFloat) {
        self.layer.shadowColor = shadow_color.cgColor
        self.layer.shadowOpacity = shadow_opacity
        self.layer.shadowOffset = offset
        self.layer.shadowRadius = shadow_radius
        self.layer.cornerRadius = corner_radius
    }
}
Run Code Online (Sandbox Code Playgroud)

将该函数称为:

firstView.addShadowToView(shadow_color: UIColor.black, offset: CGSize(width: 0, height: 5), shadow_radius: 5.0, shadow_opacity: 0.5, corner_radius: 0.0)
Run Code Online (Sandbox Code Playgroud)

还要确保您的: