Поведение индикатора дома iPhone X

Я пытаюсь имитировать поведение домашнего индикатора на iPhone X, но не могу понять, как это сделать. В некоторых приложениях индикатор дома гаснет, и вам нужно провести по нему, чтобы активировать нормальное поведение. Я нашел в контроллере возможность скрыть индикатор, но это не то, что я ищу. В Clash Royale и Clash of Clans, например, индикатор дома тускнеет, затем, когда вы проводите по нему вверх, индикатор становится ярче, и если вы сделаете это снова, он активирует «дом». Скрытие индикатора с помощью найденного мной API просто заставляет его вести себя странно.

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

override func prefersHomeIndicatorAutoHidden() -> Bool {
    return true
}

Я предпочитаю, чтобы индикатор гаснет, а затем активируется (становится ярче), когда вы проводите пальцем вверх (но не идете домой), а затем, если вы снова проводите пальцем вверх, чтобы вызвать домой. Такое поведение постоянно в приложениях Supercell, но, возможно, это не встроенное поведение.

Чтобы увидеть разницу, вы можете взглянуть на одно из этих приложений Supercell (на iPhone X) и посмотреть на приложение с только установленным свойством.


person absmiths    schedule 02.01.2018    source источник
comment
Пожалуйста, будьте более конкретны. Включите то, что вы пробовали. И снова будьте конкретны. Сделайте это чем-то, что мы сможем воспроизвести. И ДА СНОВА, будьте конкретны.   -  person dfd    schedule 02.01.2018
comment
Имущество - единственное, что мне удалось найти, чтобы попробовать, так что вот и вся история. Не думаю, что смогу лучше описать поведение без лишних слов. Единственный способ описать это - привести пример - я видел других, но пока не могу их найти.   -  person absmiths    schedule 02.01.2018
comment
Может быть, вам стоит быть лишним? Не пытаюсь показаться шутливым, но что мы можем сделать, чтобы воспроизвести вашу проблему?   -  person dfd    schedule 02.01.2018
comment
Я пытаюсь прикрепить к вопросу короткие снимки экрана соответствующего поведения, но не могу понять, как это сделать. Какие-либо предложения? Могу ли я загрузить их в Dropbox, а затем как-нибудь связать их? Я могу делать изображения, но не видео.   -  person absmiths    schedule 02.01.2018
comment
После (повторного) прочтения вашего вопроса возникли две мысли. (1) Будьте осторожны при использовании API - убедитесь, что это не частный, из-за которого Apple отклонит приложение. (2) Это действительно похоже на то, что есть приложения - игры - которые делают то, что вы хотите. Может они воссоздают домашний индикатор? Моя область знаний / опыта с точки зрения пользовательского интерфейса - это UIKit, автоматическая компоновка и безопасные области, и это явно более стандартно, чем изменение поведения индикатора домашней страницы. Я также должен задаться вопросом, есть ли у этих приложений ресурсы для этого, а у вас - нет? Удачи! (Я имею в виду это искренне.)   -  person dfd    schedule 02.01.2018
comment
Спасибо за попытку помочь. Это может быть разочаровывающим процессом, и я ценю ваш вклад.   -  person absmiths    schedule 02.01.2018


Ответы (1)


Я изучил вопрос подробнее и, наконец, нашел ответ в этой статье: iPhone X: работа с индикатором главного экрана

Акцент здесь (я изменил .top на .bottom, поскольку именно там находится индикатор дома):

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge {
  return .top
}

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

Надеюсь, кто-то другой сочтет это полезным, поскольку такое поведение довольно круто, но его трудно обнаружить.

person absmiths    schedule 02.01.2018
comment
Это потрясающе. Все остальное, что я видел, просто скрывает это, пока пользователь не коснется экрана. Это отлично подходит для игр. - person andrewlundy; 30.04.2020