我正在使用presentViewController呈现新屏幕
let dashboardWorkout = DashboardWorkoutViewController() presentViewController(dashboardWorkout, animated: true, completion: nil)
这将显示从下到上的新屏幕,但我希望不使用即可从右到左显示UINavigationController。
UINavigationController
我使用的是Xib而不是情节提要,该怎么办?
是否使用xib或storyboard正在使用都没有关系。通常,当您将视图控制器推入Presentor时,使用从右向左过渡UINavigiationController。
xib
storyboard
UINavigiationController
更新
新增计时功能 kCAMediaTimingFunctionEaseInEaseOut
kCAMediaTimingFunctionEaseInEaseOut
示例项目与 斯威夫特4 实现加入GitHub上
迅捷3和4.2
let transition = CATransition() transition.duration = 0.5 transition.type = CATransitionType.push transition.subtype = CATransitionSubtype.fromRight transition.timingFunction = CAMediaTimingFunction(name:CAMediaTimingFunctionName.easeInEaseOut) view.window!.layer.add(transition, forKey: kCATransition) present(dashboardWorkout, animated: false, completion: nil)
对象
CATransition *transition = [[CATransition alloc] init]; transition.duration = 0.5; transition.type = kCATransitionPush; transition.subtype = kCATransitionFromRight; [transition setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; [self.view.window.layer addAnimation:transition forKey:kCATransition]; [self presentViewController:dashboardWorkout animated:false completion:nil];
斯威夫特2.x
let transition = CATransition() transition.duration = 0.5 transition.type = kCATransitionPush transition.subtype = kCATransitionFromRight transition.timingFunction = CAMediaTimingFunction(name:kCAMediaTimingFunctionEaseInEaseOut) view.window!.layer.addAnimation(transition, forKey: kCATransition) presentViewController(dashboardWorkout, animated: false, completion: nil)
在自定义转换的情况下,方法中的animated参数presentViewController似乎并不重要。它可以是任何值,true或者false。
animated
presentViewController
true
false