2009-10-27 3 views
5

다른 레이어의 레이어 위에 레이어를 가져 오는 방법이 있는지 궁금합니다. UIView 클래스의 경우 bringSubviewToFront과 같습니다. 나는 CALayerzPosition 속성으로 할 수 있다고 생각하지만 이것은 모든 레이어에 대해 zPosition을 확인한 다음 적절한 값을 설정해야 함을 의미합니다.CALayer의 하위 뷰 가져 오기 시작

미리 감사드립니다.

답변

4

나는

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

는 로터리 방식이기는하지만, 당신이 원하는 것을 할 것입니다 코드 (layer 주어진 당신의 CALayer입니다) 믿습니다.

+0

감사합니다. 그게 내가 뭘 – Dmytro

+0

두 레이어의 Z - 인덱스를 교환하는거야? – Raptor

1

이 범주에는 당신이 무엇에 관해 얘기하는지 달성 ...

의 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 프로젝트 내에서을 입력하면 새로운 방법을 찾을 수 있습니다. 이제 CALayer 인스턴스에서 moveToFront을 사용할 수 있습니다.

0

성능을 높이기 위해 CALayer을 사용하는 경우 UIImageView 's를 사용해보세요. 제 경우에는 FPS가 더 빨랐습니다. (아마도 모든 이미지 속성에서 수행해야 할 UIImage에서 CGImage 변환에서)

3

더 쉽습니다. sublayerToBeMovedToFront 당신이 이동 itsSuperLayer있는 층은이다 음, 만약 그 superlayer, 그냥 말 :

[itsSuperLayer addSublayer:sublayerToBeMovedToFront]; 

addSublayer 호출이 동시에이 형제 목록에 있던 곳에서 sublayerToBeMovedToFront을 unhooks 마지막으로 rehooks (즉, , 가장 앞쪽에 위치 함, 시각적으로 "위에") 부 계층. 이것은 정확하게 비슷한 행동입니다. [aUIView addSubview:]

관련 문제