UIRefreshControl 在带有大标题的 UINavigation 后面呈现
Posted
技术标签:
【中文标题】UIRefreshControl 在带有大标题的 UINavigation 后面呈现【英文标题】:UIRefreshControl renders behind UINavigation w/ Large Titles 【发布时间】:2020-05-14 14:41:39 【问题描述】:我正在尝试使用大标题创建UITableViewController
,UINavigationBar
。
我遇到的问题是,在空表视图上使用 pull 刷新时,加载指示器位于大标题的文本后面。
如果我第二次拉刷新就没有这个问题了。
我附上了一个显示行为的 gif。
此时我的视图控制器非常简单
final class FeedSceneViewController: UITableViewController
private var loader: FeedLoader?
convenience init(loader: FeedLoader)
self.init()
self.loader = loader
override func viewDidLoad()
super.viewDidLoad()
tableView.refreshControl = .init()
load()
configureTableView()
configureUI()
func load()
tableView.refreshControl?.set(isRefreshing: true)
loader?.load(then: [weak self] _ in self?.refreshControl?.set(isRefreshing: false) )
private extension FeedSceneViewController
func configureTableView()
tableView.backgroundColor = .usingHex("fafafa")
tableView.tableFooterView = .init()
func configureUI()
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.title = "Latest content"
【问题讨论】:
【参考方案1】:您似乎是在配置大导航后设置刷新控件。
尝试将顺序更改为这样的 -
override func viewDidLoad()
super.viewDidLoad()
load()
configureTableView()
configureUI()
.......
func configureTableView()
tableView.backgroundColor = .usingHex("fafafa")
tableView.tableFooterView = .init()
tableView.contentInsetAdjustmentBehavior = .always
tableView.refreshControl = .init()
func configureUI()
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.title = "Latest content"
【讨论】:
【参考方案2】:也许你可以在你的 viewDidLoad() 中试试这个
self.edgesForExtendedLayout = []
它使您的表格视图不会与您的导航栏冲突
【讨论】:
以上是关于UIRefreshControl 在带有大标题的 UINavigation 后面呈现的主要内容,如果未能解决你的问题,请参考以下文章
UITableView - 带有背景图像的 UIRefreshControl
UIRefreshControl endRefresh 在启用大标题时跳转
带有 UISearchBar 的异常行为 UIRefreshControl
带有 UIRefreshControl 的 ScrollView 在显示为模式表时不会刷新
UIRefreshControl 未在 iOS 10 以下显示带有 DialogViewController 的 Xamarin