【问题标题】:cocoa -- getting nested NSViews and CALayers to resize proportionallycocoa -- 让嵌套的 NSViews 和 CALayers 按比例调整大小
【发布时间】:2011-06-06 03:36:36
【问题描述】:

我的 NSWindow 的 contentView 是一个 NSView 子类。它有一些其他的 NSView 子类作为子视图。子视图是基于层的,而这些层又包含子层。一些子层还有更多的子子层。

我希望在调整窗口大小时按比例调整整个内容。设置它的正确方法是什么?

谢谢

编辑:我根本没有使用 Interface Builder。

【问题讨论】:

标签: cocoa calayer nsview resize autoresizingmask


【解决方案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 的内容将被平滑地缩小。

【讨论】:

  • 有什么方法可以setContentAspectRatio 获取 NSView 等本身吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-09
  • 2012-08-25
相关资源
最近更新 更多