Закругленные углы для подкласса NSView не работают - PullRequest
0 голосов
/ 05 августа 2011

У меня есть собственный подкласс NSView, который я хочу иметь закругленные углы. Я использую следующий код в файле .m:

#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 Ответ

1 голос
/ 05 августа 2011

Вам не нужно устанавливать закругленные углы в методе drawrect; установите это в init. Кроме того, вы, вероятно, должны вызвать супер метод, [super drawRect: dirtyRect] в вашем переопределенном методе. Однако я не уверен, как ваш пользовательский заполнитель будет взаимодействовать со слоями. Вам может потребоваться установить [self.layer setMasksToBounds: YES];

...