Как обнаружить только преобразование UIView? - PullRequest
0 голосов
/ 07 июня 2018

UIStackView - представление только для преобразования.Это означает, что невозможно выполнить операции на слое вида.

Существует ли общий способ определения, является ли UIView представлением только для преобразования?

1 Ответ

0 голосов
/ 13 июня 2018

На самом деле представление только для преобразования - это представление с слоем CATransformLayer.

Таким образом, вопрос должен быть How to detect a UIView which has transform-only layer?, а ответ очень прост, проверьте тип класса view.layer.

Например, если вы хотите изменить cornerRadius наstackView.layer, оно будет через предупреждение типа

изменение свойства cornerRadius в слое, предназначенном только для преобразования, не будет иметь никакого эффекта

Это не потому, что то, что называется transform-only view это потому, что вы изменяете cornerRadius для свойства CATransformLayer и cornerRadius игнорируется в соответствии с документом Apple для CATransformLayer .

Только подслои преобразованияслой оказываются.Свойства CALayer, отображаемые слоем, игнорируются, включая: backgroundColor, содержимое, свойства стиля рамки, свойства стиля обводки и т. Д.

Возможно, вы ошиблись Возможно выполнение операцийна слое вида, но не на всех.

Как определить, является ли UIView видом только для преобразования?- Используйте расширение ниже

extension UIView {
  func isTransformOnlyView() -> Bool {
    return self.layer.isKind(of: CATransformLayer.self)
  }
}

Использование

stackView.isTransformOnlyView()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...