使用淡入动画呈现模态视图

San*_*ung 51 ios

我按模式提供了一个登录屏幕.如果我不对,请纠正我.

   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
   UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"login"];//LOOK AT NEXT LINE
   [self presentViewController:ivc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

登录屏幕确实出现,但动画是一个向上滑动.我更喜欢淡入淡出动画.我怎样才能做到这一点?

ZeM*_*oon 120

只需modalTransitionStyle为viewController 设置属性即可.(文件)

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *ivc = [storyboard instantiateViewControllerWithIdentifier:@"login"];
[ivc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentViewController:ivc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

在Swift中:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "login")
viewController.modalTransitionStyle = .crossDissolve
present(viewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

  • 嗯,这是2008年的答案.我确信当时没有这些属性.如果你看一下那里投票最多的答案,你会看到他们提出了同样的建议. (5认同)

Ben*_*erd 44

Swift 3,3.1,4,4.2 (截至2018年11月8日)

var storyboard = UIStoryboard(name: "Main", bundle: nil)
var loginViewController = storyboard.instantiateViewController(withIdentifier: "login")
loginViewController.modalTransitionStyle = .crossDissolve
self.present(loginViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

  • 不需要设置`modalPresentationStyle`.事实上,[docs](https://developer.apple.com/reference/uikit/uimodalpresentationstyle/1621375-custom)指定`.custom`应该只与`transitioningDelegate`一起使用. (6认同)

Jav*_*ría 6

您必须设置展示和过渡样式:

    self.activityAlertVC.modalPresentationStyle = .custom
    self.activityAlertVC.modalTransitionStyle = .crossDissolve
Run Code Online (Sandbox Code Playgroud)

  • 不要将 `modalPresentationStyle` 设置为 `.custom`,除非您还设置了 `transitioningDelegate` 以支持自定义转换。呈现风格与过渡风格无关。 (3认同)