Будучи несколько опытным разработчиком iOS, я только начал работать над проектом OSX для настольных компьютеров в Какао и столкнулся с проблемами, которые просто не могу понять. Так что этот вопрос для разработчиков OSX там.
Мне не очень нравится Interface Builder, поэтому я стараюсь писать свои взгляды в коде. Самый известный метод, в котором я пишу свой код макета представления, - это метод loadView
контроллера представления, и, по крайней мере, на iOS , я использую autoresizingMask
s для всего. Попробуйте посмотреть маленький, большой, повернутый пейзаж и портрет, и если все будет хорошо, я продолжу со следующего пункта в моем списке. Теперь на рабочем столе autoresizingMask
работает (или просто выглядит) немного по-другому. Прежде всего свойства имеют разные имена, но их поведение также кажется странным или неожиданным.
Когда я столкнулся с проблемой, описанной ниже, я подумал, что это, должно быть, мой код, был неправильным, поэтому после попытки достаточно долго я пересоздал его с помощью Interface Builder просто для подтверждения, и угадайте, что: я получил точно такой же результат , Возьмите вид с четырьмя вертикально сложенными подпредставлениями. Установите средние два, чтобы иметь гибкие высоты, внешние должны быть зафиксированы. Когда вы запустите его, уменьшите его размер и снова увеличите его, я получу два совершенно разных макета до и после изменения размера. Смотрите изображение:
Теперь я могу проследить, почему это происходит с математической точки зрения между циклами выполнения, но с точки зрения функции «автоматического изменения размера» или «автоматического изменения размера» это абсолютно бессмысленно.
Прежде чем я попытаюсь написать темы для всех размеров, могу ли я задать вам эти вопросы? Не стесняйтесь более подробно остановиться на теме изменения размера, если вы чувствуете, что это добавляет к сообщению.
- Я дурак, что не хочу использовать Interface Builder в настольных проектах?
- Должен ли я зависеть от
autoresizingMask
меньше, чем от проектов iOS?
- Каковы достойные альтернативы тому, чтобы макет соответствовал стандартам без Interface Builder?
Ура!