2011-01-09 1 views
3

MyView NSWindow - это подкласс NSView. Он имеет некоторые другие подклассы NSView в качестве подзонов. Подразделы являются основанными на слоях, и эти слои, в свою очередь, содержат подслои. Некоторые из подслоев имеют дополнительные под-подслои.Какао - получение вложенных NSViews и CALayers для пропорционального изменения размера

Я хочу, чтобы все изменилось пропорционально при изменении размера окна. Каков правильный способ настроить его так, чтобы это произошло?

Благодаря

EDIT: Я не использую Builder интерфейс на всех.

+0

Документация предполагает, что установка границ обзора заставит их оставаться фиксированными при изменении кадра. Теоретически, если границы не меняются, тогда содержимое будет отображаться с преобразованием при изменении кадра. Но я еще не определился, как получить ограничения, чтобы оставаться неподвижными. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaViewsGuide/Coordinates/Coordinates.html%23//apple_ref/doc/uid/TP40002978-CH10-SW10 – Douglas

ответ

1

Вот что я сделал, чтобы содержимое 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 будет уменьшаться плавно.

+0

есть ли способ 'setContentAspectRatio' для NSView и т. д., сам? –