2016-08-18 14 views
0

enter image description hereПочему добавление ограничений устраняет возможность изменения размера NSWindow?

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

Однако, как только добавляются ограничения, окно теряет способность изменять размер.

enter image description here

Если добавить

view.translatesAutoresizingMaskIntoConstraints = false 

ограничения игнорируются тоже.

enter image description here

Может кто-то пожалуйста указать мне, где я делаю что-то не так?

код можно загрузить с here

ответ

1

Во-первых, ваш parentView является функция окна contentView. Я не могу думать о времени, когда я когда-либо вмешивался в поведение макета по умолчанию этого представления, поэтому я удалял строку parentView.translatesAutoresizingMaskIntoContraints = false.

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

Наконец, в дополнение к ограничениям, которые вы добавляете, all NSView objects come with constraints that tell Auto Layout to what extent the view's content should effect how and whether it resizes. То, что подразумевается под контентом, зависит от вида, но в вашем случае это объект NSImage. В своем коде вы получаете по умолчанию поведение, которое в основном говорит, что не позволяют сжатие контента - вам нужно изменить:

imageView.setContentCompressionResistancePriority(249, forOrientation: NSLayoutConstraintOrientation.Horizontal) 
imageView.setContentCompressionResistancePriority(249, forOrientation: NSLayoutConstraintOrientation.Vertical) 

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

enter image description here

+0

большое спасибо .. Работает хорошо. – Bavan