gpt4 book ai didi

objective-c - 我应该如何将自定义 NSView 包装在 NSScrollView 中?

转载 作者:太空狗 更新时间:2023-10-30 03:50:58 24 4
gpt4 key购买 nike

Cocoa 的 NSScrollView 解释得非常少。我希望这里有人知道这是怎么回事,可以给我几秒钟的时间。

所以我有一个自定义的 NSView。我实现 -drawRect: 让它绘制一些东西,用颜色填充自己,等等。然后我有一个 NSScrollView 包装它(通过界面生成器设置)。

现在,内部自定义 View 的尺寸必须大于适合外部 ScrollView 的尺寸——它才能滚动。我知道的就这么多。我顺便配置了它,以便 ScrollView 调整到周围窗口的大小,但这应该无关紧要。

我覆盖了内部 View 的 -frame 方法以返回大小至少为 1000x1000 的框架。

- (NSRect)frame {
CGFloat w = 1000;
CGFloat h = 1000;
if (self.superview.bounds.size.width > w)
w = self.superview.bounds.size.width;
if (self.superview.bounds.size.height > h)
h = self.superview.bounds.size.height;
return NSMakeRect(0, 0, w, h);
}

这是我无法解释的结果:

  • 当 ScrollView 包围的区域小于 1000x1000 时,我可以滚动

但是

  • 唯一填充颜色的区域(即我的 -drawRect: 方法对其有任何影响)是

    • 与 ScrollView 的边界一样大
    • 位于 (0,0。我使用翻转,所以它在左上角,滚动后它最终在可见区域之外。
  • 位于这个不相关矩形之外的可见区域根本没有绘制。

除此之外我什么都不知道。 似乎用于绘制的矩形被裁剪到 ScrollView 在窗口中的位置、大小或其他东西——但它没有考虑滚动的“位置”。

应该指出的是,我真的不希望发生任何其他事情。我觉得我错过了一 block ,但找不到哪一 block 。很抱歉文字墙,但我现在无法解释得更好。我希望回答比提问更容易。

问候和希望,

不是里克阿斯特利

最佳答案

覆盖 -frame 是一个非常非常非常的坏主意。有太多取决于具有正确值的实际实例变量。而是尝试使用 setFrame: 将框架设置为您想要的框架,如果幸运的话,这可能会解决所有问题...

关于objective-c - 我应该如何将自定义 NSView 包装在 NSScrollView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3577502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com