如何在swift中从iPhone的肖像底部呈现仅景观ViewController?

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)

这很好用.

我需要的:

我需要从底部(主页按钮侧)呈现风景VC并且应该忽略到底部(主页按钮侧).这就是目前发生的事情.

在此输入图像描述

Lor*_*ari 1

您必须添加自定义过渡动画才能更改此默认行为。

    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)