Скрытие строки состояния на MacOS при использовании Auto Layout - PullRequest
0 голосов
/ 04 ноября 2019

Я ищу способ скрыть строку состояния окна при использовании автоматического макета.

Вот код, который обрабатывает изменение строки состояния:

- (void)adjustStatusBar
{
    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
    NSRect scrollViewRect;
    BOOL statusBar = [defaults boolForKey: TSSTStatusbarVisible];
    if(statusBar)
    {
        scrollViewRect = [[[self window] contentView] frame];
        scrollViewRect = NSMakeRect(NSMinX(scrollViewRect),
                                    NSMinY(scrollViewRect) + 23,
                                    NSWidth(scrollViewRect),
                                    NSHeight(scrollViewRect) - 23);
        [[self window] setContentBorderThickness: 23 forEdge: NSMinYEdge];
        [pageScrollView setFrame: scrollViewRect];
        [progressBar setHidden: NO];
        [self resizeWindow];
    }
    else
    {
        scrollViewRect = [[[self window] contentView] frame];
        [progressBar setHidden: YES];
        [pageScrollView setFrame: scrollViewRect];
        [[self window] setContentBorderThickness: 0 forEdge: NSMinYEdge];
        [self resizeWindow];
    }
}

НоВот как это выглядит, когда строка состояния выключена:

ugly after

Где строка состояния все еще видна. Что нужно сделать, чтобы место, где исчезла строка состояния?

1 Ответ

2 голосов
/ 05 ноября 2019

Вы не можете использовать -setFrame, когда активна автоматическая разметка. Самый простой способ сделать это - использовать NSStackView с .detachesHiddenViews = YES. Теперь вы просто скрываете свою строку состояния, и представление стека заботится об ее удалении и расширении просмотра прокрутки.

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