Как вы переопределяете 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 } }
Ответ 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 } }