1

我有一个 NSWindow,我将 opaque 属性设置为NO. 问题是,当我将任何视图放在该窗口内时,它的角落都有空白像素。

当不透明属性保留YES值时,一切正常,但是,窗口的角不再是圆角的。见图片:

我在 bitbucket 使用简单的示例项目创建了存储库:https ://bitbucket.org/lukaszb/animationartifacts

有没有办法解决这个问题(保持窗口的角是圆角的并且不出现空白像素)?或者我应该尝试另一种解决方案(没有setOapque:NONSWindow类)?

4

2 回答 2

1

尝试为您的 启用核心动画层RoundedView,即打开MainMenu.xib,选择RoundedView并在“查看效果”选项卡(最右侧)中检查“核心动画层”下的视图。

或者,您可以以编程方式执行此操作,例如,RoundedView添加:

- (void)awakeFromNib {
    self.wantsLayer = YES;
    self.layer = [CALayer layer];
    self.layer.backgroundColor = [[NSColor blackColor] CGColor];
    self.layer.cornerRadius = RADIUS;
}

#import <QuartzCore/QuartzCore.h>添加QuartzCore.framework到项目中。然后您可以删除该drawRect方法,因为CALayer已经为您做了圆角。(实际上,如果您只是将此层设置为您在其位置使用RoundedView的常规,则可以删除整个班级。)NSView

于 2012-11-04T19:08:26.147 回答
0

您可以创建一个 NSView 的子类,在它的 drawRect: 方法中使用 NSBezierPath 进行自定义绘图,然后将其设置为窗口的内容视图。

于 2012-11-04T19:19:36.703 回答