隐藏 UIRefreshControl 的最佳方法是什么 iOS
What is the best way to hide UIRefreshControl iOS
一旦用户离开 ViewController 而 refreshControl 仍然可见,我就无法隐藏 refreshControl。我已经尝试设置它从 superView (tableView) 中删除它,用新的替换它,等等......当用户 returns 到屏幕时,tableView 仍然存在问题,顶部内容插入保留在 refreshControl 之前并且它离开tableView 顶部的白色 space 如果我不 replace/hide refreshControl,此时它将可见。
有什么建议吗?
图片:Transition between screens, refreshControl does not hide on viewDidDisappear
显示新屏幕时,只需在 refreshControl
上使用 .endRefreshing()
。
试试这个:-
refreshControl.tintColor = .clear
初始化刷新控件:
lazy var refreshControl: UIRefreshControl = {
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action:
#selector(ViewController.handleRefresh(_:)),
for: UIControlEvents.valueChanged)
refreshControl.tintColor = UIColor.red
return refreshControl
}()
处理刷新并结束刷新:
func handleRefresh(_ refreshControl: UIRefreshControl) {
self.tableView.reloadData()
refreshControl.endRefreshing()
}
添加刷新控件:
self.tableView.addSubview(self.refreshControl)
我联系了一位朋友,他的回答非常好。这是帮助我顺利删除 refreshControl 的代码,以防它在屏幕上停留在冻结状态:
func forceHideRefreshControl(tableView: UITableView) {
if tableView.contentOffset.y < 0 { // Move tableView to top
tableView.setContentOffset(CGPoint.zero, animated: true)
}
}
虽然如果视图控制器没有完成加载,它不会有 refreshControl 可见。为此,您需要再次对其调用 beginRefreshing() ,但我会延迟执行此操作以避免任何动画问题。无论如何,我认为这是真正消除顶部白色间距的最佳解决方案。我不知道为什么 endRefreshing() 不起作用,但至少我找到了另一种方法。希望这对任何人都有帮助! :)
注意: 但是,此解决方案仅在 stuck/frozen refreshControl 上进行了测试。如果你没有这个问题我不知道会有什么影响,但是仍然使用这个隐藏refreshControl的解决方案。
一旦用户离开 ViewController 而 refreshControl 仍然可见,我就无法隐藏 refreshControl。我已经尝试设置它从 superView (tableView) 中删除它,用新的替换它,等等......当用户 returns 到屏幕时,tableView 仍然存在问题,顶部内容插入保留在 refreshControl 之前并且它离开tableView 顶部的白色 space 如果我不 replace/hide refreshControl,此时它将可见。
有什么建议吗?
图片:Transition between screens, refreshControl does not hide on viewDidDisappear
显示新屏幕时,只需在 refreshControl
上使用 .endRefreshing()
。
试试这个:-
refreshControl.tintColor = .clear
初始化刷新控件:
lazy var refreshControl: UIRefreshControl = {
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action:
#selector(ViewController.handleRefresh(_:)),
for: UIControlEvents.valueChanged)
refreshControl.tintColor = UIColor.red
return refreshControl
}()
处理刷新并结束刷新:
func handleRefresh(_ refreshControl: UIRefreshControl) {
self.tableView.reloadData()
refreshControl.endRefreshing()
}
添加刷新控件:
self.tableView.addSubview(self.refreshControl)
我联系了一位朋友,他的回答非常好。这是帮助我顺利删除 refreshControl 的代码,以防它在屏幕上停留在冻结状态:
func forceHideRefreshControl(tableView: UITableView) {
if tableView.contentOffset.y < 0 { // Move tableView to top
tableView.setContentOffset(CGPoint.zero, animated: true)
}
}
虽然如果视图控制器没有完成加载,它不会有 refreshControl 可见。为此,您需要再次对其调用 beginRefreshing() ,但我会延迟执行此操作以避免任何动画问题。无论如何,我认为这是真正消除顶部白色间距的最佳解决方案。我不知道为什么 endRefreshing() 不起作用,但至少我找到了另一种方法。希望这对任何人都有帮助! :)
注意: 但是,此解决方案仅在 stuck/frozen refreshControl 上进行了测试。如果你没有这个问题我不知道会有什么影响,但是仍然使用这个隐藏refreshControl的解决方案。