Buffer icon Проекты

15 ноября 2017-го

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

iPhone X & Edge Protection

С выходом iPhone X и отказом от физической кнопки Home, Apple доставила некоторые неудобства разработчикам. И хотя для нативных приложений всё прошло более-менее гладко (неадаптированные приложения просто получили черные рамки), то для других — пришлось делать оптимизацию.

Так, в одной из наших игр на Unity, расположение элементов управления находилось в самом нижу экрана, его нужно было поднять вверх, чтобы не задевал Home Indicator. Собственно, с этим никаких проблем не возникло.

Но почему-то в тестах на iPhone 7 с установленной iOS 11.1.1, приложение стало вести себя как-будто это iPhone X — на нижних и верхних гранях экрана перестал работать тач, точнее, он срабатывал, но некорректно. Видимо это баг iOS или Unity, пока не разобрался, но исправить надо было.


Оказывается, можно скрыть Home Indicator и включить т. н. Edge Protection. Это когда первый свайп показывает Home Indicator, а второй скрывает приложение. Пока из коробки Unity не умеет так делать, пишут что в одном из следующих обновлений добавят. В новых версиях добавили в редактор эти функции. Кто на старых версиях 5.5+ (как я), нужно патчить XCode проект. Как это сделать, я уже писал. Раз, два.

Чтобы включить Edge Protection нужно добавить пару строчек кода в два файла:

// UnityViewControllerBaseiOS.h
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures; 

// UnityViewControllerBaseiOS.mm
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures
{
    return UIRectEdgeAll;
}

Ветка на форуме Unity
Статья на Medium

10 ноября 2017   · · ·
← Ctrl →
· · ·   23 ноября 2017