我尝试自己为TabBarControllers视图的左右滑动动画。滑动时,新进入的视图将向上移动iOS状态栏的高度。因此,它直接连接到屏幕顶部并与状态栏重叠。动画结束后,视图将跳到正确的位置。 这仅在第一次加载视图时/尚未加载视图时发生。如果失败,在动画开始之前isViewLoaded为false。
UIView.transition(from: selectedViewController!.view,to: getTabView(index),duration: 0.3,options: UIView.AnimationOptions.transitionCrossDissolve,completion: { _ in selectedIndex = index })
...
func getTabView(_ index:Int) -> UIView {
if self.viewControllers![index].isViewLoaded {
//print "loaded" - all fine - view's position is correct
//tried loadView() but doesnt change anything
}
else {
//print "first load" - view is shifted up
}
return viewControllers![index].view //when accessing .view,the view is loaded anyway (docs)
}
顺便说一句,当我通过tabBar按钮切换选项卡时,不会发生此问题。
非常感谢您!