NSView - setCornerRadius 曲线所有 4 个角

NSView - setCornerRadius curve all 4 corners

我正在开发一个 Mac 应用程序,需要一个带有 4 个圆角的自定义 NSView。我尝试过的所有方法要么没有结果,要么只使 NSView 的底部两条边弯曲。有没有办法将 NSView 的所有 4 个角都弯曲?

我尝试制作自定义 class 并使用了 initWithFrame 方法,但一直没有产生任何结果。然后我尝试了 drawRect 方法,该方法仅使底部的两个角弯曲:

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

    [self setWantsLayer:YES];
    [self.layer setFrame:self.frame];
    [self.layer setMasksToBounds:YES];
    [self.layer setCornerRadius:10.0f];
}

如何将四个角全部弯曲?有谁知道为什么 Mac 的开发比 iOS 难得多。为什么即使是最基本的任务也总是需要自定义 class(即:设置 NSView 背景颜色或 运行 相当于 UIViewAnimation...)。

丹,谢谢你的时间。

这三行为 NSView 类型的 testView 提供了圆角和红色背景,链接为 ViewController 的 viewDidLoad 故事板中的出口,否需要子类化:

_testView.wantsLayer = YES;
_testView.layer.backgroundColor = [NSColor redColor].CGColor;
_testView.layer.cornerRadius = 10.;

编辑

由于这条线,并不是所有的角都是圆的:

[self.layer setFrame:self.frame];

基本上你不需要它,你用这行设置适当的图层框架:

[self setWantsLayer:YES];

如果你确实想明确地设置图层框架,你想使用

[self.layer setFrame:self.bounds];

了解 framebounds 之间的区别。 上述代码也适用于 drawRect: