abh*_*ran 5 iphone transition view ios swift
我只有纵向应用程序,只有横向模式的一个屏幕.
我做了什么:我创建了一个UINavigationController子类并重写了以下内容:
import UIKit
class LandscapeVCNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .landscape
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return .landscapeLeft
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用此navigationController来呈现我的横向视图控制器,如下所示:
if let vc = storyboard?.instantiateViewController(withIdentifier: StoryBoardIdentifiers.playerVCStoryboardIdentifier) as? PlayerViewController {
let navController = LandscapeVCNavigationController.init(rootViewController: vc)
present(navController, animated: true, completion: {
})
}
Run Code Online (Sandbox Code Playgroud)
这很好用.
您必须添加自定义过渡动画才能更改此默认行为。
let transition = CATransition()
transition.duration = 0.3
transition.timingFunction = CAMediaTimingFunction(name:kCAMediaTimingFunctionEaseInEaseOut)
transition.type = kCATransitionPush
transition.subtype = kCATransitionFromLeft
self.view!.window!.layer.add(transition, forKey: nil)
self.present(navController, animated: false, completion:nil)
Run Code Online (Sandbox Code Playgroud)