尝试将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,然后它突然变得可见,但仅限于我在那里绘制的路径(是的,我称之为超级drawRect)。这是怎么回事?
所以我想,因为我基本上只是做一个带边框的框(背景颜色只是用于测试)我可以继续使用我的子类,但后来我尝试将它添加到现有视图的角落,略微伸出,即使我将setMasksToBounds设置为NO,我将其添加到视图的主要图层中,它也会被屏蔽。
我在这里生气!为什么没有一个按预期工作?
答案 0 :(得分:3)
如果您使用图层支持的视图,则必须调用
[_resizeView setWantsLayer:YES];
也许
[_resizeView setNeedsDisplay:YES];
但我不这么认为,因为它只是一个NSView
。
答案 1 :(得分:1)
[_resizeView setNeedsDisplay:YES];
每当用于绘制视图对象的数据或状态发生变化时, 视图应该发送一个setNeedsDisplay:message。