Her şeyden önce, iPhone çevrimiçi belgelerini, bir katman oluşturma konusunda çeşitli yollar söz konusu olduğunda çok net bir şekilde anlaşılmayacak şekilde buluyorum. Bunun jütünü alıyorum ama hangi yöntemleri kullanacağımı ve katmanın bir alt katman olarak eklenmesini gerektirmediği net değil. [Image drawAtPoint:] yanı sıraCALayer
Projem beni üzerinden bir UIView onları çizim basitçe görüntüleri yükleme ve ile trivially başladı [image drawInRect:]. Bunlar mevcut grafik bağlamını kullanarak iyi çalışır.
O zaman bugün bu katmanları kullanma fikrini okudum, böylece çeşitli resimlerimi (örtülü olarak) canlandıracağım teori bir esinti olacak!
Kayıt için, belgelerin CALayer alt sınıfının gereksiz olduğunu söylediğini biliyorum, ancak bunu yaptım. Şimdi, bir tabaka oluşturmanın farklı yolları hakkında inanılmaz derecede kafam karışık.
- drawLayer
- displayLayer
- ekran
- drawInContext bu yöntemlerin hepsi için Şimdi
, bu katmanın çerçeve boyutunu ayarlamak için gerekli olan? Görünüm katmanına katman eklemek gerekli mi?
Görünür sonuçları veren tek yöntem, drawinContext yöntemidir. Ancak, örtülü bir animasyon uygularsam (ör. Image.opacity = 0) hiçbir şey olmuyor, bu da katmanımın düzgün şekilde kurulmadığına inanmamı sağlıyor.
Bazıları lütfen bu kargaşaya geri getiriniz.
Yaptığım şey alt sınıftır (nesnelerim karmaşık olduğu için) ve temsilci kendisi tarafından ayarlıyorum. Yani temelde displayLayer kullanıyorum. Tek yapmam gereken katmanın setNeedsDisplay olduğunu çağırmak. Yani şimdi soru hala drawInContext ve drawLayer: inContext kullanımı üzerinde kalır. Bunlar manuel olarak mı adlandırılıyor yoksa dahili olarak SetNeedsDisplay üzerinden mi çağrılıyor? Sadece şimdi merak ediyorum. – AlvinfromDiaspar
İşte daha doğru bir takip sorusu: Şimdi drawLayer: (CALayer *) katmanını kullanarak bir katman oluşturabilirim. Ancak, görüntüyü güncellemek istiyorsam, katmandaki bir animasyon karesi, katmandaki içeriği güncellenmiş bir görüntü * ile ayarlarsam, ekran üzerinde kaybolur. Katmanı kaldırmam ve ardından oluşturup, render ağacına yeniden eklemem gerekir mi? Bu durumda, bu darbeler! – AlvinfromDiaspar
İlk sorunuz için: drawInContext: asla doğrudan çağrılmamalı, ancak setNeedsDisplay tarafından dolaylı olarak tetiklenir. Yöntemi geçersiz kılmadıysanız, içeriğin -drawLayer ile görüntülenmesine yardımcı olmak için temsilci çağırdığını düşünüyorum: inContext: –