UIRefreschControl的Glitchy动画,带有导航栏的大标题

mag*_*oth 10 uinavigationbar ios pull-to-refresh swift ios11

我有一个嵌入导航控制器的控制器,带有大标题和UIRefreshControl.当我在tableView上进行快速刷新时,活动指示器的动画非常糟糕.

在此输入图像描述

我不知道我的代码中是否有不良行为?

tableView.refreshControl = UIRefreshControl() tableView.refreshControl?.addTarget(self, action: #selector(downloadData), for: .valueChanged)

Li *_*Sim 8

如果您已将导航栏半透明外观设置为 false,那么您需要在视图控制器中包含以下代码来处理不透明栏。此外,在故事板中,tableView 必须将顶部约束扩展到 Superview。不知何故,我不知道为什么没有适当的文档说明,但它似乎解决了故障动画。

self.extendedLayoutIncludesOpaqueBars = true
Run Code Online (Sandbox Code Playgroud)

添加到这一点,我发现这个设置目前在@ Ravi Raja Jangid 发布的链接的帮助下运行良好。我不确定是因为 tableview 现在附加到 Superview(扩展状态栏)还是 iOS 版本升级修复了错误问题。

解释 iOS7 中自动调整滚动视图Insets、extendedLayoutIncludesOpaqueBars、edgesForExtendedLayout 之间的区别

搜索控制器:

private lazy var searchController: UISearchController = {
        let searchController = UISearchController(searchResultsController: nil)
        searchController.searchResultsUpdater = self
        searchController.obscuresBackgroundDuringPresentation = false
        searchController.hidesNavigationBarDuringPresentation = false
        self.definesPresentationContext = false
        return searchController
    }()
Run Code Online (Sandbox Code Playgroud)

viewDidLoad()

self.navigationItem.hidesSearchBarWhenScrolling = false
self.navigationItem.searchController = self.searchController
self.navigationController?.navigationBar.isTranslucent = false
self.extendedLayoutIncludesOpaqueBars = true
Run Code Online (Sandbox Code Playgroud)

故事板设置: TableView 顶部约束必须是 Superview