2010-07-02 32 views
6

Uygulamamdaki resimlerle yaptığım bazı şeylerin, CALayer özellikleriyle (ör. Kenarlıklar, gölgeler, degradeler vb.) Yapabildiğini fark ettim. Bu yüzden merak ediyorum, genel olarak, CALayer'ları ve benzerlerini kullanmak daha iyi bir fikir mi, yoksa sadece tüm bunları photoshop'ta yapmak ve ihtiyacım olan her şey için UIImage'ı (View) kullanmak mı? Kaydırma performansı düşürme gölgeleri ve malzeme ile biraz yavaş, bu yüzden temelde yapabileceğim her küçük optimizasyonu bulmaya çalışıyorum.CALayer performansı vs UIImageView performansı

Arka plan bilgileri: Temel olarak dikey olarak bir grup görüntüde dolaşıyorum. Biraz fotoğraf uygulaması gibi. Bunların hepsi 3.2'den başlıyor, dolayısıyla CALayer'daki gölge ve shouldRasterize özellikleri gibi şeylere erişebiliyorum.

cevap

15

CALayer gölgeleri hakkında bilmeniz gereken önemli bir nokta, varsayılan olarak, katmanın oluşturulmuş alfa kanalından oluşturuldukları; Özellikle katman dönerken veya boyut değiştirdiğinde gerçekten yavaş olabilir. shadowPath özelliğine bakmanız gerekir: Çekirdek Animasyonu basit bir şekilde verirseniz, (katmanın bounds ile size [CGPath özelliği aracılığıyla CGPathRef aracılığıyla kullanabilirsiniz) çok fazla göreceksiniz. daha iyi performans. Özellikle sık sık değişmeyen birçok alt görünümü olan görünümlerde

shouldRasterize kesinlikle yararlıdır; Bununla birlikte, katmanın rasterizationScale'u [UIScreen mainScreen].scale'a ayarladığınızdan emin olun, ya da iPhone 4'ler gibi yüksek çözünürlüklü ekranlarda kötü bir pikselleşme elde edersiniz.