Преобразование проекта iOS в автоматическую компоновку

Я использую Xcode 6 и iOS 8. Проект был написан, начиная с iOS 5, без использования Auto Layout. Таким образом, есть много автоматического изменения размера и много кода, который перемещает элементы управления и представления, манипулируя их фреймами.

Я знаю, что можно использовать и то, и другое, но нужно ли делать полное преобразование и удалять все ссылки на свойство фрейма или просто оставить те, которые работают?

Например, создание элемента управления «на лету», который будет размещен в представлении, но не требует манипулирования его положением. Вы бы избавились от initWithFrame: и сделали бы все по ограничениям или просто оставили бы его?

Мне кажется, что оба могут сосуществовать, если элемент управления статичен после создания и размещения.


person mickm    schedule 23.10.2014    source источник


Ответы (1)


Вы можете смешивать автомакет и код кадра в одном проекте и даже в одном и том же контроллере представления. Как вы переходите на использование только автомакета, зависит от вас. Сколько у тебя есть времени? Насколько сложно поддерживать существующий код фрейма?

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

Мы начали заменять представления, созданные в коде, представлениями в раскадровке, используя ограничения для их позиционирования. Для табличных представлений мы заменили множество уродливых файлов .xib, которые определяли пользовательские ячейки, ячейками-прототипами в раскадровке. Мы также заменили верхние и нижние колонтитулы таблиц представлениями в раскадровке.

Мы обнаружили, что обычно лучше всего конвертировать весь контроллер представления в полностью автоматический подход, удаляя любое использование фреймов. Несколько контроллеров представления имели очень сложную логику кадра, которую мы оставили в покое — мы даже не определяли их в нашей раскадровке.

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

person Mike Taverne    schedule 25.10.2014
comment
Спасибо за ответ. я подумал, что это было в этом направлении, но хотел получить представление о том, что делают другие. у нас такая же ситуация; несколько контроллеров с большим количеством кадров для настройки кода, и я предполагаю, что некоторые из них останутся, а большинство будет преобразовано. - person mickm; 27.10.2014