iPhone UIView z 인덱스를 설정하는 방법
하나의 뷰를 다른 뷰 위로 이동하려면 뷰의 z 인덱스를 어떻게 알 수 있으며 어떻게 위로 이동해야 합니까?
.zPosition)CALayerobjectobject)의 z 합니다.
theView.layer.zPosition = 1;
Victor Nordling은 다음과 같이 덧붙였습니다.큰 가치는 최고입니다.음수 값을 포함하여 원하는 값을 사용할 수 있습니다."기본값은 0 입니다.
계층에 액세스하려면 QuartzCore 프레임워크를 가져와야 합니다.구현 파일의 맨 위에 이 코드 줄을 추가하십시오.
#import "QuartzCore/QuartzCore.h"
UIView형제자매는 슈퍼뷰에 추가된 순서대로 쌓입니다.UIView보기 순서를 관리하기 위한 계층 메서드와 속성이 있습니다.UIViewh:
@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;
.subviews어레이. 따라서 맨 위 뷰는 다음과 같습니다.
[parentView.subviews lastObject];
아래 그림은 다음과 같습니다.
[parentView.subviews objectAtIndex:0];
크레윈켈이 [parentView bringSubviewToFront:view]뷰가 맨 위에 표시되지만 이는 뷰가 계층 내의 모든 형제일 경우에만 해당됩니다.
IB 및 Swift
노란색이 슈퍼뷰이고 빨간색, 녹색 및 파란색이 노란색의 형제 서브뷰인 흐름 레이아웃을 고려할 때,
목표는 서브뷰(녹색 등)를 맨 위로 이동하는 것입니다.
Interface Builder(인터페이스 빌더
인터페이스 작성기에서 맨 위에 표시할 보기를 문서 개요의 목록 맨 아래로 끌기만 하면 됩니다.
또는 뷰를 선택하고 메뉴에서 Editor > Array > Send to Front 순으로 이동할 수 있습니다.
인스위프트
프로그래밍 방식으로 이를 수행하는 방법에는 몇 가지가 있습니다.
방법 1
yellowView.bringSubviewToFront(greenView)
이 방법은 위의 IB 답변과 동일한 프로그래밍 방식입니다.
하위 보기가 서로 형제일 경우에만 작동합니다.
은 브브뷰배 an an an an an an an an an an 에 포함되어 있습니다.
yellowView.subviews여기.bringSubviewToFrontgreenView0로로 합니다.2은 '하다'를 알 수 있습니다.print(yellowView.subviews.indexOf(greenView))
방법 2
greenView.layer.zPosition = 1
- 이 방법은 레이어의 3D 위치를 z축에서 더 높은 위치(사용자에게 더 가까이)로 이동합니다.는 「」이기 에,
0다른 모든 견해에 대해, 그 결과는greenView★★★★★★★★★★★★★★★★★★★★★★★★★★ 지표에 있다.0yellowView.subviews그러나 탭 이벤트와 같은 것은 여전히 가장 높은 인덱스 번호를 가진 보기로 먼저 이동하기 때문에 예기치 않은 결과가 발생할 수 있습니다.따라서 위의 방법 1을 사용하는 것이 좋을 수 있습니다. - 그
zPosition로 설정될 수 있다CGFloat.greatestFiniteMagnitude(CGFloat(FLT_MAX)Swift의 이전 버전)에서 최상위 버전임을 확인합니다.
[parentView bringSubviewToFront:view] ;
XCode의 Interface Builder를 사용하여 이 작업을 수행할 경우 Editor-> Arrangement 아래의 메뉴 옵션을 사용할 수 있습니다."Send to Front", "Send to Back" 등이 있습니다.
맨 위로 가져오려는 보기 내에서...(빠르게)
superview?.bringSubviewToFront(self)
ios에서 zPosition을 사용할 수 있습니다.
salon Detail View라는 이름의 뷰가 있는 경우:@IBOutlet weak var salonDetailView: UIView!
UIView for GMSMapView를 사용합니다.예:@IBOutlet weak var mapViewUI: GMSMapView!
맵 상단의 뷰 살롱 상세뷰를 표시하려면ViewUI
다음과 같이 zPosition을 사용합니다.
salonDetailView.layer.zPosition = 1
cocos2d를 사용하는 경우 [parentView bringSubviewToFront:view]에서 문제가 발생할 수 있지만 적어도 나에게는 작동하지 않았습니다.원하는 뷰를 앞으로 가져오는 대신 다른 뷰를 다시 전송하면 효과가 있었습니다.
[[[CCDirector sharedDirector] view] sendSubviewToBack:((UIButton *) button)];
아니면 이걸 쓰거나
- (void)insertSubview:(UIView *)view belowSubview:(UIView*)siblingSubview;
여기와 같이
언급URL : https://stackoverflow.com/questions/4631878/how-to-set-iphone-uiview-z-index
'programing' 카테고리의 다른 글
| VBA: 텍스트를 숫자로 변환 (0) | 2023.04.19 |
|---|---|
| SQL: 레코드가 존재하는지 여부를 올바르게 확인하는 방법 (0) | 2023.04.19 |
| 스칼라 변수를 선언해야 합니다. (0) | 2023.04.19 |
| 캔버스를 변경합니다.코드에 있는 부동산을 남겨두고? (0) | 2023.04.19 |
| SQL Server의 DateTime 필드가 Excel에서 잘못 표시됨 (0) | 2023.04.19 |


