【发布时间】:2020-05-17 23:00:17
【问题描述】:
我想在图像的左下方和右下方投射阴影。但我正在努力获得第二个阴影投射(layer2)......
我创建了 UIImage 视图的子类并在 IB 中使用它:
import UIKit
class ShadowImageView: UIImageView {
var layer2 = CALayer()
override func layoutSubviews() {
super.layoutSubviews()
self.layer2 = CALayer(layer: self.layer)
self.clipsToBounds = false
self.layer.shadowColor = UIColor.gray.cgColor
self.layer.shadowOffset = CGSize(width: -16, height: 16)
self.layer.shadowOpacity = 0.33
self.layer.shadowRadius = 3
self.layer.masksToBounds = false
self.layer2.shadowColor = UIColor.gray.cgColor
self.layer2.shadowOffset = CGSize(width: 16, height: 16)
self.layer2.shadowOpacity = 0.33
self.layer2.shadowRadius = 3
self.layer2.masksToBounds = false
self.layer.insertSublayer(self.layer2, at: 0)
print("\(self.layer)\n")
if let sublayers = self.layer.sublayers {
for layer in sublayers {
print("\(layer)\n")
}
}
}
}
我是在正确的方向复制图层并对其应用新的阴影,还是应该朝不同的方向看?
【问题讨论】:
-
让我们阅读 CALayer 上的 docs
init(layer:)—“此初始化程序用于创建图层的影子副本,例如,用于presentation() 方法。在任何其他情况下使用此方法将产生未定义的行为。例如,不要使用此方法使用现有图层的内容初始化新图层。那是你。不要。采用。这种方法。做你正在做的事情。它不会起作用。
标签: swift uiimageview calayer shadow