【发布时间】:2021-01-04 02:31:52
【问题描述】:
我有一个辅助方法可以帮助我在所有 UI 元素上添加阴影,它对大多数元素都非常有效,但在其中一些元素上却不行。
例如,在下面这个stackView上,我运行我的应用程序时没有阴影:
var container = UIStackView()
let stackView = UIStackView(arrangedSubviews: [button1, button2, button3])
stackView.axis = .vertical
stackView.distribution = .equalSpacing
stackView.alignment = .fill
container = stackView
self.view.addSubview(container)
container.snp.makeConstraints { make in
make.top.equalTo(view).offset(25)
make.right.equalTo(view).offset(-25)
make.width.equalTo(view.frame.width * 0.185)
make.height.equalTo(view.frame.width * 0.65)
}
container.layer.addShadow()
我也尝试为我的按钮(按钮 1、按钮 2、按钮 3)调用此 addShadow(),但没有成功。
我在addShadow()的参数中尝试了不同的值,但是......
另一个例子是它 WORKS,在我的 imageView 上:
let avatarImageView = UIImageView()
self.addSubview(avatarImageView)
avatarImageView.contentMode = .scaleAspectFit
avatarImageView.image = UIImage(named: imageName)
avatarImageView.snp.makeConstraints { (make) in
make.height.equalToSuperview()
make.width.equalToSuperview().multipliedBy(0.5)
make.left.equalToSuperview()
}
avatarImageView.layer.addShadow(opacity: 0.3, offsetWidth: 13, offsetHeight: 8)
这是一个影子方法(在 CALayer 的扩展中):
func addShadow(scale: Bool = true, opacity: Float = 0.4, offsetWidth: Int = 5, offsetHeight: Int = 5, radius: CGFloat = 5) {
masksToBounds = false
shadowColor = UIColor.black.cgColor
shadowOpacity = opacity
shadowOffset = CGSize(width: offsetWidth, height: offsetHeight)
shadowRadius = radius
shouldRasterize = true
rasterizationScale = scale ? UIScreen.main.scale : 1
}
【问题讨论】:
标签: ios swift uikit calayer shadow