在我的内容视图中,我可以覆盖drawRect:并绘制一个带圆角的路径,但是当我向其添加子视图时,它们不会被剪裁.
我可以改为使我的内容视图支持图层并给它一个角半径(maskToBounds设置为YES)但是当我添加子视图时,它们仍然没有被我的圆角修剪.
有没有办法做到这一点?或者某种方式来绘制一个没有标题栏的NSWindow并且我可以完全控制绘图,并保持圆形的剪裁角落?
解决方法 我能做的是提供我的NSWindow的自定义子类:@implementation ELGRounDWindow- (ID)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSbackingStoreType)bufferingType defer:(BOol)flag{ self = [super initWithContentRect:contentRect styleMask:NSborderlessWindowMask backing:bufferingType defer:flag]; if ( self ) { [self setStyleMask:NSborderlessWindowMask]; [self setopaque:NO]; [self setBackgroundcolor:[NScolor clearcolor]]; } return self;}- (voID) setContentVIEw:(NSVIEw *)aVIEw{ aVIEw.wantsLayer = YES; aVIEw.layer.frame = aVIEw.frame; aVIEw.layer.cornerRadius = 20.0; aVIEw.layer.masksToBounds = YES; [super setContentVIEw:aVIEw];}@end
然后在IB中,我将我的内容视图的类更改为ELGRoundVIEw:
@implementation ELGRoundVIEw- (voID)drawRect:(NSRect)dirtyRect{ [[NScolor colorWithCalibratedRed:0.0 green:0.5 blue:1 Alpha:1] set]; NSRectFill(dirtyRect);}@end
我在内容视图中放置了另一个方形子视图,其中包含以下内容:
@implementation ELGSquareVIEw- (voID)drawRect:(NSRect)dirtyRect{ [[NScolor colorWithCalibratedRed:0.0 green:0 blue:1 Alpha:1] set]; NSRectFill(dirtyRect);}@end
我结束了:
总结以上是内存溢出为你收集整理的cocoa – 自定义NSWindow,带有圆角,可剪辑子视图全部内容,希望文章能够帮你解决cocoa – 自定义NSWindow,带有圆角,可剪辑子视图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)