2016-01-12 3 views
0

У меня есть несколько NSImageView разных размеров и пропорций, которые расположены вертикально в виде, которое имеет ограниченное горизонтальное пространство.Как масштабировать NSImageView пропорционально с помощью автоматической компоновки?

Поскольку размеры изображения могут быть больше размера родительского представления, я хочу уменьшить их пропорционально, используя NSImageScaleProportionallyDown.

проблема для меня, кажется, поведение по умолчанию NSImageViews, где он только весы вниз ось, которая превышает ограничения, установленные Автокомпоновка, а затем центры в NSImageViewNSImage, это приводит к тому, NSImageView занять как можно больше высоты как если бы он не был уменьшен вообще и нарушил вертикальный поток, поскольку пространство между изображениями меняется.

Я попытался установить [questionImage setContentHuggingPriority:NSLayoutPriorityRequired forOrientation:NSLayoutConstraintOrientationHorizontal]; без каких-либо успехов.

Итак, как вы делаете NSImageView занимать столько места, сколько требуется пропорционально масштабируемому NSImage?

ответ

1

Итак, как вы делаете NSImageView занимать столько места, сколько требуется пропорционально масштабируемому NSImage?

Вы должны знать соотношение сторон изображения, и установить ограничение ширины в NSImageView в multiplier относительно его высоты ограничения (или наоборот), с тем чтобы обеспечить соблюдение этой же пропорции. Другими словами, если ширина представления изображения определяется внешними ограничениями, то его высота должна быть определена (через ее multiplier) по ее результирующей ширине или наоборот.

+0

Простое и замечательное решение, кажется таким очевидным, когда вы упомянули об этом. Спасибо! :) –

0

Я не знаю ответа на ваш вопрос, но хотел бы предложить альтернативный подход, если это вообще возможно в вашем случае использования. Как насчет того, чтобы вы уменьшили реальные изображения перед их размещением в изображениях. Таким образом, вы также сохраните некоторую память, поскольку содержимое представлений изображений будет меньше. Вы можете найти пример, который я предоставил для масштабирования изображений на iOS. Я сделал быструю проверку, и, похоже, вы можете написать аналогичный код для OSX. См. Пример In iOS, how to convert a web image into a less-quality one?.

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