只需在NSScrollView中嵌入自定义NSView即可将其杀死

时间:2014-02-24 01:55:50

标签: nsview nsscrollview

只要我在滚动视图中嵌入自定义NSView,就不会在自定义视图中绘制任何内容。

为了复制这个问题,我创建了一个vanilla Cocoa应用程序。我将NSView及其drawRect处理程序子类化,我做了一些像红色fillRect一样简单的事情。我验证这是按预期工作的:

- (void)drawRect:(NSRect)dirtyRect
{
    [super drawRect:dirtyRect];

    [[NSColor redColor] set];
    [NSBezierPath fillRect:dirtyRect];
    // Drawing code here.
}

返回IB,点击我的自定义视图,然后转到菜单编辑器>嵌入>滚动视图

我的视图中不再有红色矩形。我已经确认我的drawRect已不再被调用。

是什么给出了?

我以为我遇到了一个解决方案here,但它没有任何帮助。

似乎很简单。

运行Xcode 5.0.2& OS10.9.1。

2 个答案:

答案 0 :(得分:5)

修正了...我必须在我的自定义视图中添加这样的内容:

- (NSSize)intrinsicContentSize
{
    return NSMakeSize(960,540);
}

答案 1 :(得分:2)

这也适用于使用Swift的xcode 6 beta4(10.9.4)(使用adhoc大尺寸)

func intrinsicContentSize() ->NSSize {
    return NSMakeSize(2000,2000)
}