UIImageView 객체의 z 위치에 대해 일종의 z-index를 설정하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/826068

문제

저는 이미지 그리드를 구축하고 있으며 맨 위에서 시작하여 여기저기에 UIImageView 객체를 생성합니다.이제 조금 겹치기를 원하지만 마지막으로 그리는 것이 가장 위에 있는 것입니다.프로그래밍 방식으로 z 위치를 설정하여 내가 그리는 첫 번째 항목이 가장 위에 있는 항목이 되도록 하고 싶습니다.

도움이 되었습니까?

해결책

당신은 당신이 uiimageview를 사용했다고 말했습니다. UIIMAGEVIEW로 이미지를 그리는 것은 초기화를 한 다음 컨테이너 뷰에 추가하는 것을 의미합니다.

루프 에서이 코드를 사용할 수 없습니까?

[containerView insertSubview:image atIndex:[[containerView subviews] count]]

결과는 먼저 추가 된 뷰가 View 스택의 맨 위에 있다는 것입니다 (아직 테스트 할 수 없었습니다 :)).

다른 팁

사용하는 대신 insertsubiew 당신은 시도 할 수 있습니다:

- (void)bringSubviewToFront:(UIView *)view
- (void)sendSubviewToBack:(UIView *)view

https://stackoverflow.com/a/4631895/2482283

뷰 레이어 (Calayer 객체)의 ZPosition 속성을 사용하여 뷰의 z-index를 변경할 수 있습니다.

theView.layer.zPosition = 1;

Viktor Nordling이 덧붙였 듯이 "큰 값이 맨 위에 있습니다. 음수 값을 포함하여 원하는 값을 사용할 수 있습니다." 기본값은 0입니다.

레이어에 액세스하려면 Quartzcore 프레임 워크를 가져와야합니다. 구현 파일의 상단 에이 코드 줄을 추가하십시오.

#import "QuartzCore/QuartzCore.h"

또 다른 방법(https://stackoverflow.com/a/4663526/2482283), UIViews 메소드를 활용할 수도 있습니다.

@property(nonatomic,readonly) UIView *superview;
@property(nonatomic,readonly,copy) NSArray *subviews;

- (void)removeFromSuperview;
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;

- (void)addSubview:(UIView *)view;
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;

- (void)bringSubviewToFront:(UIView *)view;
- (void)sendSubviewToBack:(UIView *)view;

직접적이지 않습니다.

하나의 해결책은 uiviews에 z-index 속성을 제공하는 것입니다. 깊이 수준을 정의하는 정수. 그런 다음 uiviews가 포함 된 nsarray (MyArray)를 통해 깊이의 순서대로 하위 뷰로 추가 할 수 있습니다.

나는 같은 문제가 있었다. Z- 인덱스가 가장 높고 가장 낮은 하위 뷰 요소가 필요했습니다. 내 테스트에서 나는 Uikit이 Z-Position에 따라 하위 뷰-프로페티의 요소를 배열한다는 것을 알았습니다. 당신이 가져 가면[self.scrollview subviews] 예를 들어. 첫 번째 배열 요소는 뒷면에있는 서브 뷰입니다. 인덱스가 가장 높은 배열 요소는 전면의 하위 뷰입니다. 사용하는 경우

- (void)bringSubviewToFront:(UIView *)view
- (void)sendSubviewToBack:(UIView *)view`

하위 뷰 배열은 그에 따라 재정렬됩니다.

아래/위/위의 참조가있는 경우 하위보기를 추가해야합니다. 다음을 사용할 수 있습니다.

[self.view insertSubview:<#(UIView *)#> belowSubview:<#(UIView *)#>];
[self.view insertSubview:<#(UIView *)#> aboveSubview:<#(UIView *)#>];

실제로, 내가 아는 한, z-index 위치 특성은 없습니다. 보기에 그리기는 간단한 드로잉 모델을 사용합니다.

uiimageview와 달리 Calayers는 깊이가 있기 때문에 코코아 애니메이션을 사용할 수 있거나 코코아 애니메이션을 사용할 수 있습니다 (즉, 코코아 애니메이션을 사용할 수 있습니다). 보다 여기 참조를 위해.

많은 UIImageView 개체 대신 CALayer를 사용하는 것이 좋습니다.UIImageView 개체는 훌륭하지만 강렬한 드로잉의 경우 CALayer가 더 가볍고 효율적입니다(단, 사용자가 이미지와 상호 작용해야 하는 경우에는 보기 개체가 더 좋습니다).그것은 실제로 당신이 무엇을 하고 있는지에 달려 있습니다.CALayer에는 zPosition 속성이 있습니다.이것이 UIKit이 뷰 스택에서 UIView의 위치를 ​​정렬할 때 사용하는 것입니다.

imageView.layer.zPosition = 100;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top