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 } }