2014-10-23 3 views
2

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

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

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

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

ответ

4

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

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

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

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

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

+1

благодарит за ответ. Я подумал, что это происходит в этом направлении, но хотел понять, что делают другие. у нас такая же ситуация; несколько контроллеров с множеством корректирующих кодов кадров, и я предполагаю, что некоторые из них будут оставлены, и большинство из них будут преобразованы. – mickm

Смежные вопросы