我正在使用PresentViewController呈现新屏幕
let dashboardWorkout = DashboardWorkoutViewController()
presentViewController(dashboardWorkout, animated: true, completion: nil)
这将从下到上呈现新屏幕,但我希望它从右到左呈现,而不使用UINavigationController
.
我使用的是XIB而不是故事板,我该怎么做呢?
我正在使用PresentViewController呈现新屏幕
let dashboardWorkout = DashboardWorkoutViewController()
presentViewController(dashboardWorkout, animated: true, completion: nil)
这将从下到上呈现新屏幕,但我希望它从右到左呈现,而不使用UINavigationController
.
我使用的是XIB而不是故事板,我该怎么做呢?
你用的是xib
还是storyboard
都无关紧要.通常,当您将视图控制器推入演示者的UINavigiationController
时,会使用从右到左的过渡.
UPDATE个
增加了定时功能kCAMediaTimingFunctionEaseInEaseOut
Sample project个,将Swift 4个实施添加到GitHub
Swift 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)
ObjC
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];
Swift 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)
似乎presentViewController
方法中的animated
参数在这个自定义转换的情况下并不重要.它可以是任何值,true
或false
.