J'utilise ce code dans mon projet Swift. Le code suivant a bien fonctionné à Swift 2, mais ne semblent pas travailler à Swift 3 plus, il donne l'erreur suivante:Swift 3 GCFloat à GCRect
Impossible d'affecter la valeur de type « (CGFloat, CGFloat, Int, Int) » pour taper 'CGRect'
if plusLayer == nil {
plusLayer = CALayer()
let halfWidth: CGFloat = self.bounds.size.width/2
let halfHeight: CGFloat = self.bounds.size.height/2
let ds: CGFloat = sqrt(halfWidth * halfWidth/2)
let x: CGFloat = halfWidth + ds - 27/2
let y: CGFloat = halfHeight - ds - 27/2
plusLayer.frame = (x, y, 27, 27)
plusLayer.contentsGravity = kCAGravityResizeAspectFill
if let i = plusSignImage {
plusLayer.contents = i.cgImage
} else {
plusSignImage = UIImage(named: "PlusSign", in: Bundle(for: self.dynamicType), compatibleWith: UITraitCollection(displayScale: UIScreen.main().scale))
plusLayer.contents = plusSignImage!.cgImage
}
layer.addSublayer(plusLayer)
}
Tout le monde sait comment je peux résoudre ce problème? Help'd être vraiment apprécié!
Merci! : D
plusLayer.frame = CGRectMake (x, y, CGFloat (27), CGFloat (27)) fonctionne? –
Etes-vous sûr que ce code a fonctionné avec Swift 2? Je ne peux pas le compiler - vous ne pouvez pas assigner un tuple à une structure. Utilisez l'initialiseur 'CGRect (x: x, y: y, largeur: 27, hauteur: 27)' – Hamish