UIStackView
是仅转换视图。这意味着无法在视图层上执行操作。
是否有一种通用的方法来检测UIView
是否只是一个转换视图?
答案 0 :(得分:3)
实际上,仅变换视图是具有
CATransformLayer
图层的视图。
所以问题应该是How to detect a UIView which has transform-only layer?
,答案很简单,请检查班级view.layer
的类型。
例如,当您要更改cornerRadius
上的stackView.layer
时,会发出警告,例如
在仅变换图层中更改属性cornerRadius将无效
这不是因为某个名为transform-only view
的内容,因为您正在更改cornerRadius
上的CATransformLayer
和cornerRadius
属性会被忽略根据{{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
}
}