Во-первых, ваш 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. Дело в том, что проблема была ограничения сжатия, что было сразу видно, из-за наличия пунктирными оранжевые линии предупреждения, которые появились, когда я выбрал вид изображения:
большое спасибо .. Работает хорошо. – Bavan