Ограничения на изменение пользовательской клавиатуры iOS - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь создать пользовательскую клавиатуру в swift программно и до сих пор смог создать ограничения, которые я хочу для портрет и пейзаж на iPhone, но только при запускеклавиатура в соответствующей ориентации.

Проблема возникает, когда я сам переворачиваю устройство: Портрет , Пейзаж .Я сохранил свои ограничения в двух массивах и выполняю этот блок кода в моих функциях viewDidLoad и viewWillTransition:

if UIScreen.main.bounds.height >= 568 {
        NSLayoutConstraint.deactivate(constraintsLandscape)
        NSLayoutConstraint.activate(constraintsPortrait)
}
else if UIScreen.main.bounds.height <= 414 {
        NSLayoutConstraint.deactivate(constraintsPortrait)
        NSLayoutConstraint.activate(constraintsLandscape)
}

Любая помощь с этим приветствуется.

Текущий портрет и Пейзаж

1 Ответ

0 голосов
/ 25 июня 2018

если это внутри метода, вызываете ли вы его после поворота экрана? Если вы не можете проверить вращение устройства, переопределяя этот метод:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    if UIDevice.current.orientation.isLandscape {
        print("Device is in Landscape mode")
        NSLayoutConstraint.deactivate(constraintsPortrait)
        NSLayoutConstraint.activate(constraintsLandscape)
    } else {
        print("Device is in Portrait mode")
        NSLayoutConstraint.deactivate(constraintsLandscape)
        NSLayoutConstraint.activate(constraintsPortrait)
    }
}

если вы уже делаете это, то вам просто нужно позвонить self.view.layoutifNeeded() после внесения изменений в ваши ограничения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...