2015-04-17 24 views
6

CAShapeLayer'un zPpozisyonunu ayarlamaya çalışırken bir hata alıyorum.CGFloat türünde bir değere CGFloat değeri atanamıyor

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

bu hatayı alıyorum nedense: Cannot assign a value of type CGFloat to a value of type CGFloat! İşte kod. Bazı nedenlerden dolayı, hata isteğe bağlıdır. Herhangi bir döküm olmadan çevrimiçi olarak başka örnekler gördüm (zPosition = 1), bu yüzden sorunun ne olduğunu bilmiyorum.

Teşekkürler!

cevap

6

bir CALayer ait sublayers mülkiyet [AnyObject]! olarak tanımlanır. ...sublayers[l] olarak abone olduğunuzda, zPosition'un ayarlanabilir bir özelliğine sahip olmadığından emin olmak için AnyObject alıyorsunuz. o ! ile beyan ve böylece dolaylı olarak, otomatik açılmadığı, çünkü Örneğin

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

için, bir CALayer döndü AnyObject downcast gerekiyorsa, (subscripting önce) sublayers unwrap gerekmez.

Son olarak, alıntı yaptığınız hata mesajı anlamsız olduğu için yanlış kopyalanmış gibi görünüyor.

+0

Whoops, yanlış kopyalanmış. Onardım. –

0

alt katmanlar, AnyObject öğelerinin İsteğe bağlı dizisi olarak tanımlanır. Bu nedenle alt katmanları açmak zorundasınız. Aşağıdaki çalışması gerekir:

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

Bu işe yaramadı. Aynı hata. –

+0

evet .. haklısınız .. bunun için üzgünüm. @GoZoner bunu doğruladı =) – vguerra

+0

Endişeye gerek yok! cevaplamak için zaman ayırdığınız için teşekkür ederiz. –

İlgili konular