在UIView顶部添加阴影

14

我要怎样为我的UIView顶部添加阴影?我尝试了以下方法,但都没有成功...

childView.layer.cornerRadius = 5;
childView.layer.masksToBounds = YES;
childView.layer.shadowOffset = CGSizeMake(-15, 20);
childView.layer.shadowRadius = 5;
childView.layer.shadowOpacity = 0.5;

1
当你说“top”时,你是指“在前面”还是“在上面”?如果你是指在上面,CGSizeMake中的y值应该为负数。 - Gonzo
6个回答

28

Swift 3扩展:

这包括我正在开发的应用程序的默认值,但您可以更改它们以匹配您希望在应用程序中使用的样式。

enum VerticalLocation: String {
    case bottom
    case top  
}

extension UIView {
    func addShadow(location: VerticalLocation, color: UIColor = .black, opacity: Float = 0.5, radius: CGFloat = 5.0) {
        switch location {
        case .bottom:
             addShadow(offset: CGSize(width: 0, height: 10), color: color, opacity: opacity, radius: radius)
        case .top:
            addShadow(offset: CGSize(width: 0, height: -10), color: color, opacity: opacity, radius: radius)
        }
    }

    func addShadow(offset: CGSize, color: UIColor = .black, opacity: Float = 0.5, radius: CGFloat = 5.0) {
        self.layer.masksToBounds = false
        self.layer.shadowColor = color.cgColor
        self.layer.shadowOffset = offset
        self.layer.shadowOpacity = opacity
        self.layer.shadowRadius = radius
    }
}

2
这似乎会为所有子视图添加阴影。 - Vincil Bishop

6

为了使阴影效果显示出来,您需要将子视图的masksToBounds属性设置为NO

childView.layer.masksToBounds = NO;

1
如果我想让视图也变成圆角怎么办?https://dev59.com/uXI_5IYBdhLWcg3wJPdu - Apollo

4
1.步骤:首先创建一个UIView的出口。 2.步骤:
    buttonBackgroundView.layer.shadowOpacity = 0.7
    buttonBackgroundView.layer.shadowOffset = CGSize(width: 3, height: 3)
    buttonBackgroundView.layer.shadowRadius = 15.0
    buttonBackgroundView.layer.shadowColor = UIColor.black.cgColor

1

masksToBounds = NO设置为您的代码。如果masksToBounds是YES,您看不到阴影的原因是它完全隐藏在视图后面。

如果您的按钮是圆形的,则可以调整视图的imageEdgeInset值。例如:UIEdgeInsetsMake(5,0,0,10);


0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接