Использование autosizing или autoresizingMask в настольных проектах плохо? - PullRequest
2 голосов
/ 23 января 2012

Будучи несколько опытным разработчиком iOS, я только начал работать над проектом OSX для настольных компьютеров в Какао и столкнулся с проблемами, которые просто не могу понять. Так что этот вопрос для разработчиков OSX там.

Мне не очень нравится Interface Builder, поэтому я стараюсь писать свои взгляды в коде. Самый известный метод, в котором я пишу свой код макета представления, - это метод loadView контроллера представления, и, по крайней мере, на iOS , я использую autoresizingMask s для всего. Попробуйте посмотреть маленький, большой, повернутый пейзаж и портрет, и если все будет хорошо, я продолжу со следующего пункта в моем списке. Теперь на рабочем столе autoresizingMask работает (или просто выглядит) немного по-другому. Прежде всего свойства имеют разные имена, но их поведение также кажется странным или неожиданным.

Когда я столкнулся с проблемой, описанной ниже, я подумал, что это, должно быть, мой код, был неправильным, поэтому после попытки достаточно долго я пересоздал его с помощью Interface Builder просто для подтверждения, и угадайте, что: я получил точно такой же результат , Возьмите вид с четырьмя вертикально сложенными подпредставлениями. Установите средние два, чтобы иметь гибкие высоты, внешние должны быть зафиксированы. Когда вы запустите его, уменьшите его размер и снова увеличите его, я получу два совершенно разных макета до и после изменения размера. Смотрите изображение:

enter image description here

Теперь я могу проследить, почему это происходит с математической точки зрения между циклами выполнения, но с точки зрения функции «автоматического изменения размера» или «автоматического изменения размера» это абсолютно бессмысленно.

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

  1. Я дурак, что не хочу использовать Interface Builder в настольных проектах?
  2. Должен ли я зависеть от autoresizingMask меньше, чем от проектов iOS?
  3. Каковы достойные альтернативы тому, чтобы макет соответствовал стандартам без Interface Builder?

Ура!

Ответы [ 2 ]

1 голос
/ 23 января 2012
  1. Я не уверен, что скажу "дурак", но отказ от использования Interface Builder на Mac - очень ... авангардный выбор.

  2. Вы обязательно должны использовать автоматическое изменение размеров при просмотре.

  3. Будьте маниакально внимательны и тратите много времени, чтобы убедиться, что все правильно.(Вот почему я не рекомендую обходиться без Interface Builder. В общем, вы получаете много потерянного времени, которое вы могли бы потратить на что-то другое.)

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

1 голос
/ 23 января 2012
  1. Да, на мой взгляд.:)

  2. Вы должны зависеть от этого, когда он делает то, что вам нужно.Если этого недостаточно, переопределите resizeSubviewsWithOldSize: и / или resizeWithOldSuperviewSize: (или см. Ниже).

  3. ???

Если вы можетеЦель 10.7, взглянуть на новую систему макетов на основе ограничений.Посмотрите видео Cocoa Autolayout с WWDC 2011 .

Вы также можете установить minSize на вашем NSWindow на что-то достаточно большое, чтобы избежать сингулярности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...