Я работаю над приложением MacOS, которое должно отображать большие изображения. если я наивно установил ImageView в полноразмерное изображение, окно приложения можно будет увеличить по размеру экрана. Что я хотел бы сделать, так это выяснить, насколько большим я могу сделать изображение, сохраняя все окно (которое также содержит другие элементы пользовательского интерфейса) на экране.
Я знаю, что могу запросить количество доступное пространство экрана с помощью NSScreen: visibleFrame (), но это, кажется, не очень помогает, поскольку, если только я не сделаю целую загрузку предположений о том, сколько места займет остальная часть пользовательского интерфейса, что затем лишает смысла наличие макета пользовательского интерфейса на основе ограничений .
Другой подход может заключаться в том, чтобы найти способ ограничить размер окна, а затем позволить Какао определить размеры представлений. Однако, похоже, что редакторы пользовательского интерфейса в Xcode позволяют указывать только размеры stati c, что не очень помогает.
Похоже, что это возможно в SwiftUI (https://www.hackingwithswift.com/quick-start/swiftui/how-to-adjust-the-way-an-image-is-fitted-to-its-space )
Image("example-image")
.resizable()
.aspectRatio(contentMode: .fit)
Однако приложение, над которым я работаю, должно работать на более старых версиях MacOS, чем поддерживается SwiftUI, поэтому мне нужно знать, как это сделать быстро, но с использованием простого Cocoa.