Установка заголовка для пользовательского представления для элемента статуса какао - PullRequest
0 голосов
/ 14 июня 2019

У меня есть пользовательский вид состояния, для которого я установил свойство представления элемента состояния.

- (id)initWithStatusItem:(NSStatusItem *)statusItem
{
    CGFloat itemWidth = [statusItem length];
    CGFloat itemHeight = [[NSStatusBar systemStatusBar] thickness];
    NSRect itemRect = NSMakeRect(0.0, 0.0, itemWidth, itemHeight);
    self = [super initWithFrame:itemRect];

    //isReachable = YES;
    if (self != nil) {
        _statusItem = statusItem;
        _statusItem.view = self;

        [self checkReachability];
    }
    return self;
}

- (void)drawRect:(NSRect)dirtyRect
{

    NSColor *tintColor = [NSColor blackColor];
    tintColor = (!_isReachable)?[NSColor grayColor]:(self.isHighlighted?[NSColor whiteColor]:([self isDarkStyle]?[NSColor whiteColor]:[NSColor blackColor]));

    self.image = [[NSImage imageNamed:@"icn_statusitem"] imageTintedWithColor:tintColor];

    [self.statusItem drawStatusBarBackgroundInRect:dirtyRect withHighlight:self.isHighlighted];

    NSImage *icon = self.image;
    NSSize iconSize = [icon size];
    NSRect bounds = self.bounds;
    CGFloat iconX = roundf((NSWidth(bounds) - iconSize.width) / 2);
    CGFloat iconY = roundf((NSHeight(bounds) - iconSize.height) / 2);
    NSPoint iconPoint = NSMakePoint(iconX, iconY);

    [icon drawAtPoint:iconPoint fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];

    //[self checkReachability];
}

Я инициализировал здесь строку состояния, когда она запускается, представляет значок в элементе состояния.после получения уведомления statusSpeedNotification я хочу изменить изображение элемента статуса на строку.я пробовал это не работает

- (id)init
{
    self = [super init];
    if (self != nil)
    {
        // Install status item into the menu bar
        statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];
        _statusItemView = [[StatusItemView alloc] initWithStatusItem:statusItem];
        _statusItemView.image = [NSImage imageNamed:@"icn_statusitem"];
        _statusItemView.alternateImage = [NSImage imageNamed:@"icn_statusitem"];
        _statusItemView.action = @selector(togglePanel:);
        [[NSNotificationCenter defaultCenter] addObserverForName:@"statusSpeedNotification" object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
            NSString *speed = note.userInfo[@"speed"];
            _statusItemView.image= nil;
            _statusItemView.alternateImage = nil;
              statusItem.button.title = speed;

        }];
    }
    return self;
}

Любые предложения будут более полезными.

...