【问题标题】:changing a UIView's layer class更改 UIView 的图层类
【发布时间】:2018-03-12 14:59:14
【问题描述】:
根据 Apple UIView 编程指南,您只能使用 layerClass 方法更改 uiview 的 CA 层,您必须在视图初始化期间重写该方法以返回不同的类,这是唯一的方法完成:
与视图关联的图层类型在视图创建后无法更改。因此,每个视图都使用 layerClass 类方法来指定其图层对象的类。
但是,我看到应用教程直接将视图的图层分配给另一个创建的图层,我一直认为这实际上是用另一个图层类替换该图层并且工作正常。
这两种方法会产生相同的结果吗?用第二种方法不好吗?
【问题讨论】:
标签:
iphone
objective-c
uiview
【解决方案1】:
UIView 的 layer 属性是只读的。您不能分配给它。我怀疑您正在查看 Mac OS X 教程,而不是 iOS 教程。在 Mac OS X 上,您使用 NSView,它具有可读写的 layer 属性。
【解决方案2】:
UIView 类有一个类型 var
class var layerClass: Swift.AnyClass { get }
在您的视图中覆盖此 var 以更改 iOS 中的图层类:
class MyView: UIView {
override class var layerClass: Swift.AnyClass {
return CATiledLayer.self
}