我正在try 使用我为UIView类创建的自定义扩展向我的UIView添加阴影.以下是该扩展的代码:

extension UIView {
    func round(_ radius : CGFloat = 10) {
        layer.cornerRadius = radius
        clipsToBounds = true
    }

    func addBorder(color: UIColor, width: CGFloat) {
        layer.borderColor = color.cgColor
        layer.borderWidth = width
    }

    func addShadow(opacity: Float, size: Double, radius: Double, color: UIColor ) {
        layer.shadowColor = color.cgColor
        layer.shadowOpacity = opacity
        layer.shadowOffset = CGSize(width: size, height: size)
        layer.shadowRadius = radius
        layer.masksToBounds = true
    }
}

ROUND和addBorde函数运行得很好,但addShadow函数似乎不起作用.我try 在UIView实例上调用该函数,如下所示:

let myView = UIView()
myView.addShadow(opacity: 0.5, size: 2, radius: 4, color: .black)

但阴影不会出现在视图上

我已经用其他类型的视图测试了这个扩展,比如按钮和标签,阴影效果非常好.这似乎只是UIView的问题.

有人知道可能是什么原因导致了这个问题吗?任何帮助都将不胜感激.先谢谢你

推荐答案

该问题可能是由addShadow函数中的layer.masksToBounds = true行引起的.此属性将层的子层剪裁到层的边界,这可能会阻止显示阴影.

在将阴影添加到层之前,可以try 将masksToBounds设置为False.

Ios相关问答推荐

将数据传回VC时委托为空

GraphQL iOS Apollo客户端自动持久化查询导致崩溃

如何在不将应用程序留在SwiftUI上的情况下更改语言?

使用标头UICollectionViewFlowLayout时的简单SwiftUI视图错误

拖动手势导致 sim 崩溃 Swift UI

多协议和类继承混乱,Swift

如何在Combine发布者之间强制执行最小延迟

为什么常量属性可能在 Swift 类中被初始化两次?

集成 IDNow SDK 时未找到 Xcode FLAnimatedImage.h 文件问题

clipShape swift的三元

满足条件时 SwiftUI 动画背景 colored颜色 变化

有哪些可靠的机制可以防止 CoreData CloudKit 中的数据重复?

如何将标准化坐标系中的点的位置转换为具有相对位置的常规坐标系?

Apple Push Service 证书不受信任

如何忽略touch 事件并将它们传递给另一个子视图的 UIControl 对象?

不变违规:应用程序 AwesomeProject 尚未注册使用静态 jsbundle 为 iOS 设备构建时

故事板中的 colored颜色 与 UIColor 不匹配

使用 Xcode 4 的 iPhone 临时构建

iOS 7 半透明模态视图控制器

Info.plist 实用程序错误:无法打开 Info.plist,因为没有这样的文件