cocoa——让嵌套的 NSView 和 CALayers 按比例调整大小

2024-05-03

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

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

Thanks

编辑:我根本不使用 Interface Builder。


以下是我为使 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将会顺利缩小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cocoa——让嵌套的 NSView 和 CALayers 按比例调整大小 的相关文章

  • NSTableView 如何通过代码设置内容模式(基于视图或基于单元格)?

    如题 NSTableView 如何通过代码设置内容模式 基于视图或基于单元格 感谢您的帮助 NSTableView默认为基于单元的 这对于向后兼容性是有意义的 当表视图委托实现时 表视图是基于视图的 tableView viewForTab
  • 如何使用QLPreviewPanel?

    我该如何使用QLPreviewPanel 我知道它以前不是公共 API 但在 10 6 中已经有了 如何使用它在标准 QuickLook 面板中显示文件预览 查看快速查看下载器 http developer apple com librar
  • WebView (OSX) 未在打印面板预览中呈现

    我的应用程序创建并打印 WebView 输出页面正在正确组装和打印 但我没有在打印面板中预览页面 NSRect printViewFrame printViewFrame size width paperSize width marginL
  • 复制文件而不冻结 GUI

    好的 基本上这就是我想做的 我的文件列表中有一个文件列表应用程序包 例如在文件夹中myData 请注意 子文件夹 等中有很多文件 文件夹 我想要复制整个文件树到用户磁盘上的给定位置 我需要有访问每个单独的文件被复制 因为其中一些在复制之前需
  • 从 Angularjs 应用程序中的 iOS Webview 调用 Javascript 函数

    我的问题是 当我尝试从 UIWebView 中调用 AngularJS 应用程序中存在的 javascript 函数时 该函数无法识别 当我在典型的 html 结构中调用该函数时 该函数会按预期被识别 下面提供的示例 目标 C void v
  • 在 javascript/jquery 中获取图像的完整尺寸

    我在页面上有一个图像 该图像已调整大小以适合 div 例如 400x300 如何在 jQuery 中获取图像的完整尺寸 4000x3000 width 和 height 似乎只返回图像的当前大小 图像有naturalWidth and na
  • 主队列上的dispatch_sync 与dispatch_async

    请耐心等待 这需要一些解释 我有一个类似于下面的函数 上下文 aProject 是一个名为 LPProject 的核心数据实体 其数组名为 memberFiles 其中包含另一个名为 LPFile 的核心数据实体的实例 每个 LPFile
  • 传递给 NSDecimalNumber +decimalNumberWithString:locale: 的区域设置参数是什么,以便它始终与使用点 (.) 小数点标记的 NSString 一起使用?

    我有一个 NSString 我想将其转换为NSDecimalNumber 该字符串是从服务器接收的 并且始终使用以下格式进行格式化en US语言环境类似XXX YYY不喜欢XXX YYY 我想创建一个NSDecimalNumber它接受XX
  • 使用 PRODUCT_NAME 构建 cocoapods 项目的 xcodebuild 失败

    我可以使用以下命令构建我的 Cocoapods 项目 base basename xcworkspace xcworkspace xcodebuild sdk iphonesimulator ios version CONFIGURATIO
  • 在基于视图的 NSTableView 中,如何通过单击使控件成为第一响应者?

    基于视图的 NSTableView 似乎只有标准行为 为了使表内的文本字段成为第一响应者 用户必须双击或单击并 保持冷静 然而 考虑到基于视图的 NSTableViews 提供的灵活性 这种行为并不总是可取的 因为现在可能有很多不同且复杂的
  • 无法在 Android 中调整 Web 视图的大小

    我正在尝试调整大小Web View在安卓中 第一次单击时 Web 视图会扩展为新大小 但第二次单击时 它不会恢复为我指定的旧大小 任何帮助表示赞赏 public class MainActivity extends Activity Rel
  • Objective-C 字符串文字的预处理器宏值

    我在构建设置中定义了一个预处理器宏 FOO BAR 我想将该值转换为可以传递给方法的 Objective C 字符串文字 以下 define 不起作用 但它应该展示我想要实现的目标 define FOOLITERAL FOO want FO
  • 阻止 div 容器调整大小

    我的 html 页面中有两列 一列向右浮动 另一列向左浮动 我已将两个容器的高度设置为 100 将两个容器的宽度设置为 50 我希望这两个容器适合中间的窗户 当用户水平调整窗口大小时 我不希望内容调整大小 我怎样才能做到这一点 Thanks
  • WebView 不运行 loadHTMLString 中给出的 JavaScript

    我不明白为什么这不起作用 我的桌面上有一个 test htm 文件 如下所示 This is x 2 我有一个 WebVie
  • 在 Android 上将大位图文件的大小调整为缩放的输出文件

    我的文件中有一个大位图 例如 3888x2592 现在 我想将该位图大小调整为 800x533 并将其保存到另一个文件中 我通常会通过调用来缩放位图Bitmap createBitmap方法 但它需要一个源位图作为第一个参数 我无法提供它
  • 如何从 Xcode 4 中的实体创建用户界面?

    我已经用核心数据进行了几天的实验 并且在过去的几个小时里尝试找出如何从 xcode 4 中的实体创建 UI 根据我一直在阅读的书籍 您必须选择将核心数据实体拖到界面生成器中的窗口中 但是当我在 xcode 4 中执行此操作时 没有任何反应
  • 如何生成Mac应用程序的安装包?

    如何为 OS X 二进制文件以及一些配置和脚本文件创建单个安装程序包 最终文件夹应如下所示 任何帮助 将不胜感激 谢谢 如果您希望将各种东西放置在不同的位置 安装程序在这里 文档在那里 支持文件在这里等等 它们也非常适合提供安装体验的可配置
  • iOS 使用 NSColor 与 UIColor?

    有什么区别UIColor and NSColor 什么时候会使用每一种 我碰到NSColor在试图弄清楚的同时UIColor用于 iOS 中的属性字符串 我理解使用UIColor对于 UIKit 等 但我不认为NSColor对于这种事情确实
  • 调整大小时在窗口中绘图留下未绘制的边框

    我遇到的问题看似微不足道 但我找不到解决的方法 这里是 我有一个窗口 里面有一些图形 为了简单起见 我们假设它是一个实心绿色矩形 填充了窗口的整个客户区域 我希望每次窗口改变大小时都重新绘制这个矩形并填充整个窗口 我最初做的就是这样的 我已
  • 通过 renderInContext 定位要绘制的视图:

    我想画一个UIView在我目前的CGGraphicsContext 我画的是UIView via renderInContext 但它的位置不正确 始终位于左上角 我拥有所有的价值观UIView可用于绘制UIView CGRect fram

随机推荐