Вот что я сделал, чтобы пропорционально масштабировать содержимое NSView при изменении размера родительского окна.Сначала в конструкторе интерфейсов я добавил свой NSView в окно, а затем добавил ссылку на него в моем AppDelegate.Мой, случается, называется scrollView
.Я удалил все функции автоматического изменения размера из scrollView
.
Затем в свой AppDelegate я добавил это:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
// keep the aspect ratio constant so that the content looks good
[window setContentAspectRatio:NSMakeSize(2, 1)];
window.delegate = self;
}
- (void)windowDidResize:(NSNotification *)notification {
// size the scrollView to fill the window, but keep its bounds constant
NSRect rect = [[window contentView] frame];
NSRect oldBounds = [scrollView bounds];
[scrollView setFrame:rect];
[scrollView setBounds:oldBounds];
}
Это также превращает AppDelegate в делегат окна.Хорошо, так как у меня не так много логики.Сохраняя границы постоянными при смене кадра, содержимое scrollView
будет плавно уменьшено.