본문 바로가기
iOS/iOS

뷰 계층 관리

by 패쓰킴 2022. 3. 25.
728x90

Zindex(Z position)을 이용하여 뷰의 계층을 제어 할 수 있다.

이렇게 A와 B의 위치를 교환하여 A뷰를 앞으로 전환 할 수 있다.

단, 같은 부모뷰에 속해 있어야 한다.(같은 계층에 있어야 한다.)

코드를 이용하는 두가지 방법이 있다.

Method 1

AView.bringSubviewToFront(BView)
  • 뷰의 인덱스 위치를 변경 해준다.

Method 2

Bview.layer.zPosition = 1
  • 제일 앞에 보이는 뷰의 포지션을 움직여 준다.

예를 들어

이렇게 버튼이 뒤에 있고 뷰가 앞에 있을 때,

button.layer.zPosition = 1000 이라고 해주면

이렇게 버튼이 위로 오게 되지만 터치이벤트는 움직이기 전 뷰에 가려지지 않은 부분에서만 동작한다.

하지만 , self.view.bringSubviewToFront(button) 해주면,

ㅡ여기에서 self.view는 슈퍼뷰!ㅡ

뷰의 인덱스 위치가 변경 되면서 보여지는 것 그대로 버튼이 주황색 뷰 위에 위치하면서 초록색 영역의 버튼 터치이벤트가 동작한다.

 

만약,

zPosition과 bringSubviewToFront가 동작하지 않는 다면

확인 해볼수 있는 이유

-> 계층 관리가 필요한 객체는 모두 스토리보드를 통해 작성했거나,

      코드를 통해 작성되어야

      정상적으로 동작한다.

 

 

참고>

https://developer.apple.com/documentation/uikit/uiview/1622541-bringsubviewtofront?language=objc

https://stackoverflow.com/questions/4631878/how-to-set-iphone-uiview-z-index

https://zeddios.tistory.com/832

728x90

'iOS > iOS' 카테고리의 다른 글

Firebase DynamicLinks  (0) 2022.04.01
Delegate 사용  (0) 2022.03.28
UILable cornerRadius  (0) 2022.03.16
UIView 값이 틀릴 때  (0) 2022.03.14
UIButton 상태에 따른 속성 적용(storyboard)  (0) 2022.02.24

댓글