NSMenuitem цветовой оттенок изображения не меняется - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть customview, у которого есть изображение для просмотра изображения. Я устанавливаю NSImageNameMenuOnStateTemplate для просмотра изображений с оттенком, но цвет оттенка не применяется

NSImage *tintImage = [self tintedImage:[NSImage imageNamed:NSImageNameMenuOnStateTemplate] withTintColor:NSColor.whiteColor];

myimageView.image = tintImage
-(NSImage*)tintedImage:(NSImage*)image withTintColor:(NSColor*)color{
    NSImage *tinted = [image copy];
    [tinted lockFocus];
    [color set];

    NSRect imageRect = {NSZeroPoint, [image size]};
    NSRectFillUsingOperation(imageRect, NSCompositingOperationSourceAtop);
    [image unlockFocus];
    return tinted;
}

Любая помощь наиболее ценится ..

Ответы [ 2 ]

0 голосов
/ 19 апреля 2019

Вы действительно должны избегать использования lockFocus / unlockFocus.Они устарели, и вы их неправильно использовали, заблокировав одно изображение и разблокировав другое.Используйте `+ [NSImage imageWithSize: flipped: drawingHandler:]

В качестве добавления категории к NSImage:

- (NSImage *)imageWithSolidFillColor:(NSColor *)color
{
    return [NSImage imageWithSize:self.size flipped:false drawingHandler:^BOOL(NSRect dstRect) {
        [self drawInRect:dstRect fromRect:NSZeroRect operation:NSCompositingOperationSourceOver fraction:1.0];
        [color set];
        NSRectFillUsingOperation(dstRect, NSCompositeSourceAtop);
        return YES;
    }];
}
0 голосов
/ 17 апреля 2019

Изменение [image unlockFocus]; с [tinted unlockFocus];

для macOS необходимо установить setTemplate на NO

[tinted setTemplate:NO];

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...