setNeedsStatusBarAppearanceUpdate (), кажется, застрял в главной очереди моего приложения при прокрутке - PullRequest
0 голосов
/ 10 октября 2019

В Xcode 11 и iOS 13. Мне нужно изменить стиль строки состояния, когда пользователь прокручивает просмотр таблицы или просмотр прокрутки в моем приложении.

Когда я прокручиваю представление до некоторого порогового значения, я вызываю setNeedsStatusBarAppearanceUpdate:, но кажется, что мое приложение зависло, и загрузка процессора увеличивается до 70% ~ 90%.

// Этопростой UITableviewController, только ячейка изменила backgroundColor

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y  > 400 && self.lastOffsetY < 400) {
        [self setNeedsStatusBarAppearanceUpdate];
    }else if (scrollView.contentOffset.y < 400 && self.lastOffsetY > 400) {
        [self setNeedsStatusBarAppearanceUpdate];
    }
    self.lastOffsetY = scrollView.contentOffset.y;
}

- (UIStatusBarStyle)preferredStatusBarStyle {
    if (self.tableView.contentOffset.y > 400) {
        return UIStatusBarStyleDarkContent;
    }else {
        return UIStatusBarStyleLightContent;
    }
}

enter image description here Есть ли способ плавно реализовать спрос?

1 Ответ

0 голосов
/ 10 октября 2019

Используйте взамен

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView 
                     withVelocity:(CGPoint)velocity 
              targetContentOffset:(inout CGPoint *)targetContentOffset;

scrollViewDidScroll вызывается постоянно для каждого изменения contentOffset.

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