2011-08-05 48 views
0

我有一个自定义的NSView子类,我想要圆角。我用下面的代码.m文件:NSView子类不工作的圆角

#import "ItemImageSelectionView.h" 

@implementation ItemImageSelectionView 

- (id)initWithFrame:(NSRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     self.wantsLayer = YES; 
     self.layer.frame = self.frame; 
    } 

    return self; 
} 

- (void)drawRect:(NSRect)dirtyRect 
{ 

    [[NSColor colorWithCalibratedRed:0.0 green:0.5 blue:1 alpha:1] set]; 
    NSRectFill(dirtyRect); 

    [self.layer setCornerRadius:5.0]; 

} 

@end 

我使用此代码来初始化视图,漂亮的默认:

NSView *imageSelectionView = [[ItemImageSelectionView alloc] initWithFrame:CGRectMake(imageView.frame.origin.x - 2, imageView.frame.origin.y - 2, imageView.frame.size.width + 4, imageView.frame.size.height + 4)]; 
    [self addSubview:imageSelectionView positioned:NSWindowBelow relativeTo:imageView]; 

但它不设置任何圆角!我究竟做错了什么?

回答

1

您不需要在drawrect方法中设置圆角;在init中设置。另外,您应该在您的覆盖方法中调用super方法,[super drawRect:dirtyRect]。不过,我不确定你的填充自定义会如何与图层进行交互。您可能需要设置[self.layer setMasksToBounds:YES];