在 Xcode 11 和 iOS 13 中。当用户在我的应用程序中滚动 tableview 或scrollview 时,我必须更改状态栏样式。
当我将 View 滚动到某个阈值时,我调用 setNeedsStatusBarAppearanceUpdate:,但它似乎卡住了我的应用程序,并且 CPU 使用率飙升至 70%~90%。
//这是一个简单的UITableviewController,单元格只改变了背景颜色
- (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;
}
}
最佳答案
使用代替
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset;
每次 contentOffset 更改都会永久调用 scrollViewDidScroll
。
关于ios - 滚动时 setNeedsStatusBarAppearanceUpdate() 似乎卡在了我的应用程序的主队列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58319399/