gpt4 book ai didi

objective-c - NSView - setCornerRadius 曲线所有 4 个角

转载 作者:行者123 更新时间:2023-12-03 16:56:38 32 4
gpt4 key购买 nike

我正在开发 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 的等效项......)。

最佳答案

这三行为我的 NSView 类型的 testView 提供了圆角和红色背景,该类型作为从 Storyboard的 viewDidLoad 中的导出链接。 ViewController,不需要子类化:

_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:

关于objective-c - NSView - setCornerRadius 曲线所有 4 个角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44067139/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com