Цвет теневого пути UIView не меняется - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть 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:

enter image description here

И теперь моя проблема

Когда я меняю внешний вид телефона, shadowsPath color не меняется автоматически.Что я должен сделать, чтобы сделать цвет динамичным?

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Все свойства слоя не реагируют на изменение цвета автоматически (из-за преобразования в CGColor).

Вместо этого реагируйте на изменения набора признаков и повторно устанавливайте свойства при изменении внешнего вида цвета:

override open func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    if #available(iOS 13, *), self.traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
        // re-set your properties here
    }
}
0 голосов
/ 25 сентября 2019

добавьте self.view.layoutIfNeeded() в вашу функцию. Это может решить вашу проблему.Альтернативным способом вы добавите цвет в viewDidLayoutSubviews.

...