화면이 멈추는 현상 (TabView)
TabView란?
공식문서: 링크
Apple 정의
A view that switches between multiple child views using interactive user interface elements.
여러개의 자식뷰를 가진 뷰 스위쳐라고 적혀있다. 안드로이드의 ViewPager와 비슷하다고 보면 될 것 같다. 애플에서 공식으로 제공하는 뷰중에 하나지만 StackOverflow 등을 보면 버그가 많아서 많이 쓰이지는 않는 것같다.
이번에 겪은 증상을 기록용으로 남겨본다.
버그증상
iOS 14.2, 14.3
등 특정 버전에서 화면이 멈추면서 아예 동작을 하지 않았다.
SwiftUI를 쓰면서 느낀것인데 SwiftUI는 OS 버전을 많이 타는 것 같다. iOS 14.1이나 iOS 15버전에서는 정상동작을 하는 것을보면 희한하다.
해결방법
- TabView를 제거한다.
- UIPageViewController를 사용하거나 SwiftUIPager 라이브러리를 사용한다.
UIKit에서 제공하는 UIPageViewController를 사용하거나 SwiftUIPager라이브러리를 사용하니 버전별로 다르게 동작하던 버그가 사라졌다.
결론
- iOS 14 일부 버전에서 TabView 사용시 화면이 아예 멈추는 현상 발생 (TabView 한 개만 View에서 단독사용시 발생 안함)
- 아직까지는 TabView를 사용하지 말고 UIKit에서 제공하는 UIPageViewController를 사용하거나 SwiftUIPager라이브러리를 사용하자
Disqus