【发布时间】:2020-01-25 07:27:39
【问题描述】:
我有一个UIView,我为它设置了一个shadowPath,如下所示:
func addShadow() {
let cornerRadius: CGFloat = self.containerView.frame.height/2
self.containerView.layer.shadowPath = UIBezierPath(roundedRect: self.containerView.frame, cornerRadius: cornerRadius).cgPath
self.containerView.layer.shadowRadius = cornerRadius
self.containerView.layer.shadowOffset = .zero
self.containerView.layer.shadowOpacity = 0.2
self.containerView.layer.cornerRadius = cornerRadius
self.containerView.layer.shadowColor = UIColor(named: "whiteColor")?.cgColor
}
这是whiteColor:
现在我的问题是
当我改变手机的外观时,
shadowPath的颜色不会自动改变。我应该怎么做才能使颜色动态?
【问题讨论】:
-
在 layoutSubview 或 viewDidLayoutSubviews 中做所有的颜色工作。然后将颜色设置为一个动态变量,该变量将根据 traitCollection.userInterfaceStyle 计算它的值
-
@andromedainiative 你确定这是最好的方法吗?我有很多视图有阴影,将它们都设置在
layoutSubView中是否正确? -
我的意思是我所知道的没有灵丹妙药的通用解决方案。我们最终将所有颜色设置都移到了这些方法中。你可以在这里读更多关于它的内容。除非您在每个视图中使用相同的视图控制器,否则您将不得不手动更新颜色。 developer.apple.com/documentation/appkit/…
-
@andromedainiative 很好的文档,谢谢
标签: ios swift uiview ios-darkmode shadowpath