如何在不使用导航控制器的情况下推送UIViewController?

时间:2017-06-23 09:13:46

标签: ios swift xcode uiviewcontroller uinavigationcontroller

我试图模仿SFSafariViewController可以观察到的行为。显示时,推送过渡动画的使用方式与根UINavigationalController一样。当边缘平移向右滑动时,弹出过渡。

let url = URL(string: "http://google.com")!
let safari = SFSafariViewController(url: url)
present(safari, animated: true, completion: nil)

但是,我需要使用相同的转换才能与其他任何UIViewController一起使用。

let storyboard = UIStoryboard(name: "Place", bundle: nil)
let controller = storyboard.instantiateInitialViewController()
present(controller!, animated: true, completion: nil)

2 个答案:

答案 0 :(得分:0)

使用CATransition,您可以在呈现ViewController

时更改动画方向
    let controller = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()

    let transition = CATransition()
    transition.duration = 0.5
    transition.type = kCATransitionPush
    transition.subtype = kCATransitionFromRight
    view.window!.layer.add(transition, forKey: kCATransition)
    present(controller, animated: false, completion: nil)

答案 1 :(得分:0)

@Fuxing,没有导航控制器就无法推送视图控制器。推送视图控制器是两个选项。

  1. 在故事板中为viewController添加导航控制器。
  2. 创建导航控制器的对象。

    let viewToPush = YourViewController()
    let nav = UINavigationController(rootViewController: viewToPush)    
    nav.pushViewController(nav, animated: true)