Сохранить портретное положение домашнего индикатора iPhone X - PullRequest
0 голосов
/ 03 июля 2018

Есть ли способ показать домашний индикатор в его портретном положении, даже если ориентация экрана горизонтальная?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Как отметил @ the4kman, единственный способ добиться этого - использовать преобразование вида:

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

Но также и представление, которое должно быть преобразовано, должно быть внутренним. для которого вам нужно установить высоту, равную ширине суперпредставления , и ширину, равную высоте суперпредставления . И это должно быть по центру по вертикали и горизонтали .

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

0 голосов
/ 03 июля 2018

Вы не можете изменить положение домашнего индикатора. Это был бы также плохой UX, так как пользователь ожидает, что он будет внизу.

Обходным путем для этого было бы вращение суперпредставления со всеми вашими элементами пользовательского интерфейса с CGAffineTransform. Чтобы это работало, , вы должны разрешить только книжную ориентацию в вашем приложении (или в конкретном контроллере представления ), чтобы пользовательский интерфейс всегда отображался в альбомной ориентации.

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

... или для оставленного ландшафта:

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

Кроме того, имейте в виду, что ваше вращающееся суперпредставление должно перевернуть свой вид и высоту, чтобы заполнить весь экран. Например, вы должны изменить его размер с 320х568 до 568х320.

...