Xcode Interface Builder. Чем Отличаются Эти Настройки Маски Авторазмера?


Теперь я вполне комфортно использую маски авторазмера В IB, но есть два параметра авторазмера, которые мне не ясно, как они должны отличаться:

Настройка 1
Авторазмер как с верхним, так и с нижним якорем http://dl.dropbox.com/u/11270323/stackoverflow/autosize-mask-0.png

Настройка 2
Авторазмер с помощью только верхнего якоря http://dl.dropbox.com/u/11270323/stackoverflow/autosize-mask-1.png

Некоторый контекст. Подкласс UIView, который использует эти настройки являются дочерним подвидом. Установка 1 дает мне желаемое поведение-subview расширяется/сжимается с родительским представлением - в то время как установка 2 немного отличается неочевидным образом.

Какова планируемая разница в компоновке между этими двумя настройками?

Спасибо,
Дуг

2 8

2 ответа:

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

Настройка 2: Вид будет изменяться по вертикали таким образом, чтобы расстояние от вершины супервизора сохранялось, а пропорциональная высота вида была равна консервированный. В принципе, вид будет расти пропорционально с супервизором; если супервизор станет выше на 10%, Этот вид также станет выше на 10%.

Обратите внимание, как они отличаются на практике. Предположим, что superview имеет высоту 100 пикселей, а subview-60 пикселей, с буфером 20 пикселей сверху и снизу. Теперь давайте изменим размер супервизора до 150 пикселей в высоту.

  • Установка 1: подвидо растет, чтобы сохранить 20px поля, став 110px высокий.
  • установка 2: подпространство увеличивается на 50% (60px - > 90px). Верхняя граница по-прежнему 20px, но нижняя граница теперь 40px.

В общем случае обычно требуется поведение в параметре 1. Вы можете использовать параметр 2, Если у вас есть главный/подробный вид, разделенный сверху / снизу, и вы хотите, чтобы обе секции росли пропорционально супервизору. В этом случае вы придадите обоим видам гибкую высоту, фиксируя верхний край верхнего вида и нижний край нижнего вид.

Ответ Би-Джея действительно потрясающий. Но я думаю, что его пример неверен.

Предположим, что супервизор имеет высоту 100 пикселей, а субвью-60 пикселей, с 20px буфер сверху и снизу. Теперь давайте изменим размер супервизора на 150 пикселей в высоту.

Таким образом, для установки 2 верхнее поле, несомненно, все еще 20px, но подвид и нижнее поле должны вырасти на (150 - 20) / (100 - 20) = 62.5%. Рабочую панель высота становится 97.5 военторга, и нижняя граница сейчас 32,5 РХ.

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