【问题标题】:How to present a landscape only ViewController from portrait bottom of iPhone in swift?如何从 iPhone 的纵向底部快速呈现仅横向的 ViewController?
【发布时间】:2017-11-19 22:14:16
【问题描述】:

我有一个只有纵向的应用程序,只有一个屏幕处于横向模式。

我做了什么: 我创建了一个 UINavigationController 子类并覆盖了以下内容:

import UIKit

class LandscapeVCNavigationController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .landscape
    }
    override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
        return .landscapeLeft
    }
}

然后使用这个 navigationController 来呈现我的横向视图控制器,如下所示:

if let vc = storyboard?.instantiateViewController(withIdentifier: StoryBoardIdentifiers.playerVCStoryboardIdentifier) as? PlayerViewController {

            let navController = LandscapeVCNavigationController.init(rootViewController: vc)

            present(navController, animated: true, completion: {
            })
        }

这很好用。

我需要什么:

我需要从底部(主页按钮一侧)呈现横向 VC,并且应该从底部(主页按钮一侧)解散。这就是目前正在发生的事情。

【问题讨论】:

  • 你找到解决这个问题的方法了吗?

标签: ios iphone swift view transition


【解决方案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) 

【讨论】:

  • 这似乎可以正常工作,但是在过渡时出现了一个小故障,并且呈现的动画与标准动画不同。让我看看我能不能解决它。
猜你喜欢
  • 2013-01-31
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
相关资源
最近更新 更多