Как правильно определить изменение ориентации с помощью Phonegap на iOS?

Objective C является самим языком.

Какао, раньше NextStep, является API и временем выполнения, которое находится сверху Obj-C. Что-либо запускающееся с NS (для NextStep) является частью Какао, не частью языка.

174
задан Sebastian Simon 25 April 2018 в 22:54
поделиться

1 ответ

Хотя вопрос относится только к PhoneGap и использованию iOS, и хотя этому уже ответили, я могу добавить несколько точек к более широкому вопросу обнаружения экранной ориентации с JS в 2019:

  1. window.orientation свойство удерживается от использования и не поддерживается [1 128] браузеры Android .There является более новым свойством, которое предоставляет больше информации об ориентации - screen.orientation. Но это все еще экспериментально и не поддерживаемое [1 129] iOS Safari . Таким образом для достижения лучшего результата, вероятно, необходимо использовать комбинацию двух: const angle = screen.orientation ? screen.orientation.angle : window.orientation.

  2. Как @benallansmith упомянутый в [1 111] его событие комментария , window.onorientationchange запущено прежде window.onresize, таким образом, Вы не получите фактические размеры экрана, если Вы не добавите некоторую задержку после orientationchange события.

  3. существует Экранный Плагин Ориентации Cordova для поддержки более старых мобильных браузеров, но я полагаю, что нет никакой потребности в использовании его в наше время.

  4. был также screen.onorientationchange событие, но оно удерживается от использования и не должно использоваться. Добавленный только для полноты ответа.

В моем примере использования, я не заботился очень о фактической ориентации, а скорее о фактической ширине и высоте окна, которое, очевидно, изменяется с ориентацией. Таким образом, я использовал resize событие, чтобы не иметь дело с задержками между orientationchange событие и реализовывать размеры окна:

window.addEventListener('resize', () => {
  console.log(`Actual dimensions: ${window.innerWidth}x${window.innerHeight}`);
  console.log(`Actual orientation: ${screen.orientation ? screen.orientation.angle : window.orientation}`);
});

Примечание 1: Я использовал синтаксис EcmaScript 6 здесь, удостоверьтесь, что скомпилировали его в ES5 в случае необходимости.

Примечание 2: window.onresize событие также запущено , когда виртуальная клавиатура переключается , не только когда ориентация изменяется.

0
ответ дан 23 November 2019 в 20:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: