我正在使用Mac应用程序,需要一个带有4个圆角的自定义NSView。我尝试过的所有东西都没有产生任何结果,或只是弯曲了NSView
的两个边缘。有没有办法弯曲NSView
的所有4个角落?
我尝试制作一个自定义类并使用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上更难。为什么即使是最基本的任务总是需要一个自定义类(即:设置NSView背景颜色或运行相当于UIViewAnimation
....)。
谢谢你的时间,Dan。
答案 0 :(得分:3)
这三行为我提供圆角和红色背景,testView
类型NSView
链接为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];
了解frame
和bounds
之间的区别。
上述代码也适用于drawRect:
。