2015-04-17 19 views
6

Ich erhalte einen Fehler, wenn ich versuche, die zPosition eines CAShapeLayer zu setzen. Hier ist der Code:Einem Wert vom Typ CGFloat kann kein Wert vom Typ CGFloat zugewiesen werden

self.view.layer.sublayers[l].zPosition = CGFloat(1) 

Aus irgendeinem Grund bin ich diesen Fehler: Cannot assign a value of type CGFloat to a value of type CGFloat!. Aus irgendeinem Grund ist der Fehler mit dem optionalen. Ich habe andere Beispiele gesehen, die online ohne Casting gemacht wurden (zPosition = 1), also weiß ich nicht, was das Problem hier ist.

Danke!

Antwort

6

Die sublayers Eigenschaft eines CALayer als [AnyObject]! definiert. Wenn Sie als ...sublayers[l] einreichen, erhalten Sie eine AnyObject, die, um sicher zu sein, keine einstellbare Eigenschaft von zPosition hat. Sie müssen

if let layer = self.view.layer.sublayers[l] as? CALayer { 
    layer.zPosition = CGFloat(1) 
} 

Auch die zurück AnyObject zu einem CALayer mit, zum Beispiel niedergeschlagenen, brauchen Sie nicht sublayers (vor Indizierung) auszupacken, weil sie mit ! erklärt wird und somit implizit, automatisch ausgepackt.

Schließlich scheint die Fehlermeldung, die Sie zitiert, falsch kopiert werden, da es unsinnig ist.

+0

Whoops, falsch kopiert. Ich habe es repariert. –

0

Sublayer ist als ein optionales Array von AnyObjects definiert. Daher müssen Sie Sublayer auspacken. Folgendes sollte funktionieren:

self.view.sublayers![l].zPosition = CGFloat(1) 
+0

Das hat nicht funktioniert. Derselbe Fehler. –

+0

ja .. du hast recht .. sorry dafür. @GoZoner hat es richtig =) – vguerra

+0

Keine Sorge! Danke, dass du dir die Zeit genommen hast zu antworten. –

Verwandte Themen