Xcode 16으로 빌드 시 tabBar 애니메이션 동작으로 인한 이슈

나는 사과·2025년 3월 7일
0

TIL

목록 보기
18/18

문제

UITabBarContoller를 커스텀하여 사용하고 있을 때 Xcode 16으로 빌드하면 tabBar를 선택하면서 화면 전환을 할 때 의도하지 않은 애니메이션이 추가되면서 화면 전환이 발생.
또한, 탭 전환 시에 의도하지 않은(다른 특정 상황의) NavigationBar의 색상이 나타나는 현상이 발생하여 자연스럽지 않은 전환이 이뤄지게 됨.

원인

Xcode 16, iOS 18에서 새로운 스타일의 UITabBar가 나타나면서 애니메이션이 추가된 것 같음..
(작성중..)

수정

selectedIndex, selectedViewController를 오버라이드 하여 iOS 18 이상 기기의 경우에는 각각의 프로퍼티 값이 변경될 때 UIView.performWithoutAnimation의 클로저 내에 값을 할당해줌으로 써 의도하지 않은 애니메이션이 발생하지 않도록 수정함.

class CustomTabBarController: UITabBarController {

	override var selectedIndex: Int {
	  set {
	    if #available(iOS 18.0, *) {
	      UIView.performWithoutAnimation {
	        super.selectedIndex = newValue
	      }
	    } else {
	      super.selectedIndex = newValue
	    }
	  }
	  get {
	    super.selectedIndex
	  }
	}
	
	override var selectedViewController: UIViewController? {
	  set {
	    if #available(iOS 18.0, *) {
	      UIView.performWithoutAnimation {
	        super.selectedViewController = newValue
	      }
	    } else {
	      super.selectedViewController = newValue
	    }
	  }
	  get {
	    super.selectedViewController
	  }
	}
}

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN