티스토리 뷰

카테고리 없음

iOS 14 UIStackView 변경점

류익환 2020. 10. 11. 14:49
반응형

안녕하세요 !!

 

iOS14 대응작업중 UIStackView가 동작이 바뀐 부분을 찾게되어 이글을 쓰게되었습니다.

 

 

사용해 보신분들은 아시겠지만 UIStackView가 정말 편리한것은 사실인데요. 하지만 이런 UIStackView에도 단점은 있었는데 

 

바로 비렌더링뷰라는 문제때문에 Background, corner등이 먹지않는 불편함이 존재하였습니다. 

 

당시 UIStackView 추가 당시 설명은 아래와 같았는데요

 

The UIStackView is a nonrendering subclass of UIView; that is, it does not provide any user interface of its own. Instead, it just manages the position and size of its arranged views. As a result, some properties (like backgroundColor) have no effect on the stack view.

 

UIStackView는 UIView의 하위클래스 이지만 랜더링을 하지않기에 자체적인 인터페이스를 제공하지않는다 하지만 정렬된 뷰의 위치와 크기만 관리 한다. 라고 되어습니다.

 

그래서 스택뷰 외뷰에 Border를 넣는다던가 하는 행위를 하려면 StackView를 UIView에 감싸거나 했어야만 했습니다 .

 

넘나 불편한것.. 😢

 

 

그런데 조용히 iOS14에서는 UIStackView의 Background가 적용이 되는 것을 발견하고 Release Note를 찾아보아도 제가 못찾은건지 해당 현상에 대한 부가적인 설명은 찾지를 못했습니다. (발견해주시면 덧글 부탁드립니다 T^T.. )

 

 

어떻게 뭐가 바뀌었기에 iOS14에서만 적용이 되는건가..

 

우선 iOS 13에서의 StackView 정보입니다. (레이어 주목)

 

iOS14에서의 StackView 입니다.

 

CATransformLayer를 사용하여 3D 레이어 계층을 만들며 CALayer와 달리 자체 콘텐츠를 표시하지 않는데 

CALayer로 바뀌면서 background, corner 등 여러가지 정보를 포함하여 랜더링 할 수 있게된것 같습니다.

 

 

잠수함 패치라는것인가 이게..

 

좋은 방향으로 변경된것 같습니다만 iOS14에서만 작동이 되기에 사용한다해도 분기를 해야할것같습니다.

 

의도한것인지 임시적인것인지는 모르겠지만 UIStackView를 사용중이신 분들이라면 UIStackView에 원하지않는 색상이

들어가 있을 수 있으니 한번씩 확인해보시는것을 권장드립니다.  ^^

 

 

 

 

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함