2009-10-27 17 views
5

Başkalarının kat kat üstüne katman getirmenin bir yolu olup olmadığını merak ediyorum. bringSubviewToFront gibi bir şey UIView sınıfı için yapar. CALayer'un zPosition özelliğiyle yapılabileceğini düşünüyorum ama bu, tüm katmanlar için zPosition'u kontrol etmem ve daha sonra uygun değeri ayarlamam gerektiği anlamına geliyor.CALayer için GetSubviewToFront

Şimdiden teşekkürler.

cevap

4

Ben

[layer retain]; 
CALayer *superlayer = layer.superlayer; 
[layer removeFromSuperlayer]; 
[superlayer addLayer:layer]; 
[layer release]; 

dolaylı bir şekilde de olsa, ne istediğinizi yapacak kodu (layer göz önüne alındığında sizin CALayer olduğunu) inanıyoruz.

+0

Teşekkür ederim bir ganimet. – Dmytro

+0

'a ihtiyacım olan şey bu iki katmanın z dizinini nasıl değiştirebilir? – Raptor

1

Bu kategori bahsediyorsun şeyi başarmış olacağım ...

CALayer + Additions.h

#import <Foundation/Foundation.h> 
#import <QuartzCore/CALayer.h> 
@interface CALayer (Additions) 
- (void)moveToFront; 
@end 

CALayer + Additions.m

#import "CALayer+Additions.h" 
@implementation CALayer (Additions) 
- (void)moveToFront { 
    CALayer *superlayer = self.superlayer; 
    [self removeFromSuperlayer]; 
    [superlayer addSublayer:self]; 
} 
@end 

01 Projeniz içindeve moveToFront şimdi CALayer örnekleri için yeni bir yöntem bulacaksınız.

0

Performans için CALayer kullanıyorsanız, yalnızca UIImageView 's kullanmayı deneyin. Benim durumumda birkaç FPS daha hızlı olduğu ortaya çıktı. (

3

Bu, UIImage'dan CGImage dönüşümüne kadar her görüntü kaynağında gerçekleştirmem gerekiyordu). sublayerToBeMovedToFront taşıma ve itsSuperLayer ediyoruz katman olan ise de, onun superlayer, sadece söylemek:

[itsSuperLayer addSublayer:sublayerToBeMovedToFront]; 

addSublayer çağrı aynı anda o kardeş listesinde olduğu yerden sublayerToBeMovedToFront unhooks ve son olarak rehooks (yani , en üst konumlandırılmış, görsel olarak "üstte") alt katman. Bu, tam olarak benzer bir davranıştır [aUIView addSubview:]

İlgili konular