0

试图将 NSView 添加到现有的 NSView,但由于某些奇怪的原因,我失败了。我正在这样做:

        _resizeView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 10, 10)];
    [_resizeView.layer setBorderWidth:2];
    [_resizeView.layer setBorderColor:[NSColor purpleColor].CGColor];
    [_resizeView.layer setBackgroundColor:[NSColor blackColor].CGColor];
    [_resizeView setAutoresizingMask:NSViewNotSizable | NSViewMinXMargin | NSViewMaxYMargin];
    [self addSubview:_resizeView];

尝试删除自动调整大小的蒙版,但仍然无效。然后我将它从 NSView 更改为 NSButton,这神奇地起作用并且视图是可见的。

创建了我自己的 NSView 子类,我在其中覆盖了 drawRect,然后它突然变得可见,但仅适用于我在那里绘制自己的路径(是的,我正在调用 super drawRect)。这里发生了什么?

所以我想,因为我基本上只是在做一个带边框的盒子(背景颜色只是为了测试)我可以继续使用我的子类,但是我尝试将它添加到我现有视图的角落,稍微突出,即使我将要添加它的视图的主层的 setMasksToBounds 设置为 NO,它也会被屏蔽。

我要疯了!为什么这些都没有按预期工作?

4

2 回答 2

3

If you use a layer-backed view you have to call

[_resizeView setWantsLayer:YES];

And maybe

[_resizeView setNeedsDisplay:YES];

but I don't think so, because it's just an NSView.

于 2013-05-22T14:37:53.560 回答
1
[_resizeView setNeedsDisplay:YES];  

每当用于绘制视图对象的数据或状态发生变化时,都应向视图发送 setNeedsDisplay: 消息。

于 2013-05-22T14:32:18.033 回答