2014-03-20 2 views
3

i'am использование autolayout с NSSpliView, установка следующие на картинкеNSSplitView с Autolayout, предотвращает пропорциональное изменение размеров

Вид раскола в окне, которое может изменить размер, когда он изменяет, делитель меняется пропорционально 50:50, как изменить это, чтобы высота нижнего вида оставалась, а верхний вид уменьшался (но не более 124 пикселей), но все же свободен и вручную менять его, перетаскивая раскол?

enter image description here

ответ

5

Так что повторим у вас есть три требования,

  1. Вид снизу остается один и тот же размер на изменение размера

    Уменьшить приоритет удерживающую если вид сверху (выберите NSSplitView для получения правильного инспектора)

    Holding

  2. Вид сверху не может изменить размер больше, чем 124px

    Добавить неравенство ограничение, которое устанавливает высоту зрения менее чем или равна 124px. Вы можете сделать это в IB. Также будет хорошей идеей создать IBOutlet для этого ограничения в вашем пользовательском представлении класса контроллера для следующего шага ...

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

    Я не совсем уверен, но проверял способ делегирования NSSplitView, такой как splitView:resizeSubviewsWithOldSize: или splitViewDidResizeSubviews:. Когда вы изменяете размер с помощью разделителя, метод делегата должен переопределить ограничение по высоте как текущий размер размера. Так что-то вроде следующего в методе делегата

    self.heightConstant.constant = NSHeight(topView)

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

+1

1. было ЗОЛОТО, я отсутствовал !!! возможно, одно дополнение? как установить начальную позицию с разбивкой по высоте - поскольку настройка вручную не работает? так что вершина изначально высотой позволяет сказать 300 –

+0

'setPosition: (CGFloat) position ofDividerAtIndex:' не работает? –

+0

Нет, он не меняет положение разделения, он работает в вашем образце? –

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