Записки Junior-а: универсальный Storyboard
Всем привет. Как и обещал в первой своей публикации, я продолжаю делиться практическим опытом по изучению возможностей нового Xcode 6. В этой заметке я поделюсь своими мыслями относительно такого новшества, как Size Classes.
При работе над проектом Cookorama (iPad версия) я подумал, что было бы неплохо каким-то образом сократить время, которое тратится на разработку в Storyboard 2-х вариантов дизайна: отдельно для iPhone и iPad. И это при том, что основная функциональность приложения, его события и поведение визуальных элементов остаются общими. На первый взгляд ничего сложного, но много времени уходит на повторное связывание элементов управления с уже написанными событиями и свойствами (IBAction и IBOutlet). А если учесть тот факт, что с каждым годом количество гаджетов под управлением ОС iOS становится все больше, и основное отличие между ними, в первую очередь, заключается в размере экрана (его диагонали), то решение вопроса с оптимизацией таких непродуктивных затрат выходит на первый план.
Поэтому не случайно мое внимание привлекла новость о том, что компания Apple решила подсобить разработчикам при помощи технологии Size Classes, которая по-другому рассматривает подходы к работе с Interface Builder. Им была предложена возможность выбора из нескольких режимов работы, изменяя параметры ширины (Width) и высоты (Height).
Для использования новых возможностей в своих проектах, необходимо при их создании установить галочку Use Size Classes. При этом Storyboard примет немного непривычный вид, где в нижней части представления отобразится надпись wAny / hAny. Также необходимым, но необязательным условием удобства работы с новым классом является условие совместного использования Auto Layout (устанавливается / отменяется там же, где и Size Classes).
Сначала нужно разместить элементы дизайна на основной UIView, можно без их привязки к координатам (т.н. якоря). Это можно сделать позже, выбрав совокупность устройств, для которых будут устанавливаться эти самые соотношения. Например, указав параметр wCompact / hRegular, я определился, что буду формировать дизайн для iPhones всех возможных диагоналей в «портретной» ориентации. Аналогичным образом, изменив данный параметр на wAny / hCompact, я займусь корректировкой дизайна для iPhones всех возможных диагоналей в «альбомной» ориентации. Как видим, все легко и просто!
Следующим немаловажным моментом новой «фичи» является возможность изменять высоту шрифта текстовых надписей и размеры элементов экрана. И все это происходит без необходимости написания хотя бы одной строчки кода…
Мой вывод — технология заслуживает внимания, и я с нетерпением жду возможности проверить свои знания в новых проектах нашей компании!