保留iPhone X Home指示器的纵向位置

时间:2018-07-03 11:08:42

标签: ios iphone swift iphone-x

即使屏幕方向为横向,有没有办法以其纵向显示首页指示器?

2 个答案:

答案 0 :(得分:2)

正如@ the4kman所指出的,实现此目的的唯一方法是使用视图转换:

view.transform = CGAffineTransform(rotationAngle: .pi / 2)

但是,应该转换的视图也应该是内部视图。您需要将其 height设置为Superview宽度,将 width设置为Superview高度。并且应该垂直和水平居中

enter image description here

  

您可以在您的应用中支持所有方向,并且仅将其禁用   该特定的控制器。

视图控制器实现:

import UIKit

class PortraitController: UIViewController {

    @IBOutlet weak var viewLandscaped: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        viewLandscaped.transform = CGAffineTransform(rotationAngle: .pi / 2)
    }

    override var supportedInterfaceOrientations : UIInterfaceOrientationMask {
        return .portrait
    }
}

结果:

enter image description here enter image description here

答案 1 :(得分:1)

您无法修改原点指示器的位置。 UX也很糟糕,因为用户希望它位于底部。

一种解决方法是使用CGAffineTransform旋转所有UI元素的超级视图。为此,you should only allow the portrait orientation in your app(或in a particular view controller)可以使用户界面始终显示为横向。

view.transform = CGAffineTransform(rotationAngle: .pi / 2)

...或左侧风景:

view.transform = CGAffineTransform(rotationAngle: .pi / -2)

此外,请记住,旋转的超级视图应翻转其视图和高度,以使其充满整个屏幕。例如,您应该将其尺寸从320x568调整为568x320。