Как вы переопределяете layerClass в swift
В Objective-C мы используем это как
+ (Class)layerClass
{
return [CAEAGLLayer class];
}
Очевидно, что это не сработает:
CAEAGLLayer.class()
Потому что class
- это ключевое слово в Swift. Как вы это делаете в Swift?
Ответы
Ответ 1
Адаптировано из Apple ListerKit пример кода:
override class func layerClass() -> AnyClass {
return CAEAGLLayer.self
}
Обновление для Swift 3:
override class var layerClass: AnyClass {
get {
return CAGradientLayer.self
}
}
Ответ 2
В iOS 10 это вычисленное свойство вместо метода:
override class var layerClass: AnyClass {
get {
return CAEAGLLayer.self
}
}
Ответ 3
Swift делает интроспекцию гораздо иначе, чем Objective-C. Вы можете взглянуть на документы о Метатипы.
В вашем случае я бы попробовал: CAEAGLLayer.self
Ответ 4
Это можно записать так:
import UIKit
class GradientView: UIView {
override final class var layerClass: AnyClass {
return CAGradientLayer.self
}
}
Бонусный совет: Может быть, вы хотели бы иметь безопасный гейтер типа для слоя? Затем вы можете написать
import UIKit
class GradientView: UIView {
override final class var layerClass: AnyClass {
return CAGradientLayer.self
}
override var layer: CAGradientLayer {
return super.layer as! CAGradientLayer
}
}