Asp*_*pyn 2 iphone transition uiviewcontroller uiview uimodaltransitionstyle
我正在使用UIViewController,我使用presentModalViewController:controllerr animated:YES来呈现它,但我想它是否会从屏幕顶部向下滑动而不是从底部向下滑动,任何方式都可以这样做?
我创建了一个用于推动ViewControllers所有4个方向的功能:
- (void) slideLayerInDirection:(NSString *)direction andPush:(UIViewController *)dstVC {
CATransition* transition = [CATransition animation];
transition.duration = 0.5;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = direction;
[self.view.layer addAnimation:transition forKey:kCATransition];
[self pushViewController:dstVC animated:NO];
}
Run Code Online (Sandbox Code Playgroud)
头文件包含以下内容:
#import <QuartzCore/QuartzCore.h>
#define direction_left kCATransitionFromLeft
#define direction_top kCATransitionFromBottom
#define direction_right kCATransitionFromRight
#define direction_bottom kCATransitionFromTop
Run Code Online (Sandbox Code Playgroud)
public extension UINavigationController {
func pushViewControllerFromTop(viewController vc: UIViewController) {
vc.view.alpha = 0
self.present(vc, animated: false) { () -> Void in
vc.view.frame = CGRect(x: 0, y: -vc.view.frame.height, width: vc.view.frame.width, height: vc.view.frame.height)
vc.view.alpha = 1
UIView.animate(withDuration: 1,
animations: { () -> Void in
vc.view.frame = CGRect(x: 0, y: 0, width: vc.view.frame.width, height: vc.view.frame.height)
},
completion: nil)
}
}
func dismissViewControllerToTop() {
if let vc = self.presentedViewController {
UIView.animate(withDuration: 1,
animations: { () -> Void in
vc.view.frame = CGRect(x: 0, y: -vc.view.frame.height, width: vc.view.frame.width, height: vc.view.frame.height)
},
completion: { complete -> Void in
if complete {
self.dismiss(animated: false, completion: nil)
}
})
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7526 次 |
| 最近记录: |