我的NSWindow的contentView是一個NSView子類。它有一些其他NSView子類作爲子視圖。子視圖是基於圖層的,而這些圖層又包含子圖層。某些子層還有其他子子層。cocoa - 獲取嵌套的NSViews和CALayers按比例調整
我希望在調整窗口大小時按比例重新調整大小。什麼是正確的方式來設置它,以便發生?
謝謝
編輯:我根本沒有使用接口生成器。
我的NSWindow的contentView是一個NSView子類。它有一些其他NSView子類作爲子視圖。子視圖是基於圖層的,而這些圖層又包含子圖層。某些子層還有其他子子層。cocoa - 獲取嵌套的NSViews和CALayers按比例調整
我希望在調整窗口大小時按比例重新調整大小。什麼是正確的方式來設置它,以便發生?
謝謝
編輯:我根本沒有使用接口生成器。
下面是我在調整父窗口大小時按比例縮放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
的內容將平滑地縮小。
有沒有辦法`setContentAspectRatio`爲NSView等,本身? – 2012-07-15 09:31:42
該文檔建議設置視圖的邊界將導致它們在幀更改時保持固定。理論上,如果邊界沒有改變,那麼當幀改變時,內容將通過變換進行渲染。但我還沒有弄清楚如何讓界限保持不變。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaViewsGuide/Coordinates/Coordinates.html%23//apple_ref/doc/uid/TP40002978-CH10-SW10 – Douglas 2011-01-09 18:48:18