다른 레이어의 레이어 위에 레이어를 가져 오는 방법이 있는지 궁금합니다. UIView
클래스의 경우 bringSubviewToFront
과 같습니다. 나는 CALayer
의 zPosition
속성으로 할 수 있다고 생각하지만 이것은 모든 레이어에 대해 zPosition
을 확인한 다음 적절한 값을 설정해야 함을 의미합니다.CALayer의 하위 뷰 가져 오기 시작
미리 감사드립니다.
다른 레이어의 레이어 위에 레이어를 가져 오는 방법이 있는지 궁금합니다. UIView
클래스의 경우 bringSubviewToFront
과 같습니다. 나는 CALayer
의 zPosition
속성으로 할 수 있다고 생각하지만 이것은 모든 레이어에 대해 zPosition
을 확인한 다음 적절한 값을 설정해야 함을 의미합니다.CALayer의 하위 뷰 가져 오기 시작
미리 감사드립니다.
나는
[layer retain];
CALayer *superlayer = layer.superlayer;
[layer removeFromSuperlayer];
[superlayer addLayer:layer];
[layer release];
는 로터리 방식이기는하지만, 당신이 원하는 것을 할 것입니다 코드 (layer
주어진 당신의 CALayer
입니다) 믿습니다.
이 범주에는 당신이 무엇에 관해 얘기하는지 달성 ...
의 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
을 사용할 수 있습니다.
성능을 높이기 위해 CALayer
을 사용하는 경우 UIImageView
's를 사용해보세요. 제 경우에는 FPS가 더 빨랐습니다. (아마도 모든 이미지 속성에서 수행해야 할 UIImage
에서 CGImage
변환에서)
더 쉽습니다. sublayerToBeMovedToFront
당신이 이동 itsSuperLayer
있는 층은이다 음, 만약 그 superlayer, 그냥 말 :
[itsSuperLayer addSublayer:sublayerToBeMovedToFront];
addSublayer
호출이 동시에이 형제 목록에 있던 곳에서 sublayerToBeMovedToFront
을 unhooks 마지막으로 rehooks (즉, , 가장 앞쪽에 위치 함, 시각적으로 "위에") 부 계층. 이것은 정확하게 비슷한 행동입니다. [aUIView addSubview:]
감사합니다. 그게 내가 뭘 – Dmytro
두 레이어의 Z - 인덱스를 교환하는거야? – Raptor