如何检测仅转换的UIView?

时间:2018-06-07 03:12:15

标签: ios swift uiview uikit

UIStackView是仅转换视图。这意味着无法在视图层上执行操作。

是否有一种通用的方法来检测UIView是否只是一个转换视图?

2 个答案:

答案 0 :(得分:3)

  

实际上,仅变换视图是具有CATransformLayer图层的视图。

所以问题应该是How to detect a UIView which has transform-only layer?,答案很简单,请检查班级view.layer的类型。

例如,当您要更改cornerRadius上的stackView.layer时,会发出警告,例如

  

在仅变换图层中更改属性cornerRadius将无效

这不是因为某个名为transform-only view的内容,因为您正在更改cornerRadius上的CATransformLayercornerRadius属性会被忽略根据{{​​3}}。

  

仅渲染变换图层的子图层。忽略由图层渲染的CALayer属性,包括:backgroundColor,contents,边框样式属性,描边样式属性等。

您可能错误的是可以在视图的图层上执行操作,但不能全部执行操作。

如何检测UIView是否只是一个转换视图? - 使用以下扩展名

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

用法

stackView.isTransformOnlyView()

答案 1 :(得分:0)

这对我有用:

extension UIView { func isTransformOnlyView() -> Bool { return self.transform != .identity } }