Comment écrasez-vous layerClass dans swift

En Objective-C, nous le faisons comme ça

+ (Class)layerClass { return [CAEAGLLayer class]; } 

Evidemment cela ne marchera pas:

 CAEAGLLayer.class() 

Parce que la class est un mot-clé dans Swift. Comment le fais-tu dans Swift?

Adapté du code exemple d’Apple ListerKit :

 override class func layerClass() -> AnyClass { return CAEAGLLayer.self } 

Mise à jour pour Swift 3:

 override class var layerClass: AnyClass { get { return CAGradientLayer.self } } 

Dans iOS 10, il s’agit d’une propriété calculée au lieu d’une méthode:

 override class var layerClass: AnyClass { get { return CAEAGLLayer.self } } 

Swift fait l’introspection beaucoup plus différemment que l’Objective-C. Vous voudrez peut-être jeter un coup d’œil aux documents sur Metatypes .

Pour votre cas, j’essaierais: CAEAGLLayer.self

On peut écrire comme ça

 import UIKit class GradientView: UIView { override final class var layerClass: AnyClass { return CAGradientLayer.self } } 

Astuce bonus: Peut-être aimeriez-vous avoir un type getter sûr sur le calque? Alors vous pouvez écrire

 import UIKit class GradientView: UIView { override final class var layerClass: AnyClass { return CAGradientLayer.self } override var layer: CAGradientLayer { return super.layer as! CAGradientLayer } }