我在导航控制器中嵌入了一个带有大标题和UIRefreshControl的控制器。当我在tableView上进行pull-to-refresh时,活动指示器的动画非常小。
我不知道我的代码中是否有不良行为?
tableView.refreshControl = UIRefreshControl()
tableView.refreshControl?.addTarget(self, action: #selector(downloadData), for: .valueChanged)
答案 0 :(得分:3)
如果您已将导航栏半透明外观设置为false,则需要在视图控制器中包含以下代码以处理不透明条形图。此外,在storyboard中,tableView必须将顶部约束扩展到Superview。不知何故,我不知道为什么没有适当的文件说明,但它似乎解决了小故障动画。
self.extendedLayoutIncludesOpaqueBars = true
除此之外,我还发现这个设置在@ Ravi Raja Jangid发布的链接的帮助下运作良好。我不确定它是否因为tableview现在附加到Superview(扩展状态栏)或iOS版本升级修复了错误的问题。
SearchController:
private lazy var searchController: UISearchController = {
let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
self.definesPresentationContext = false
return searchController
}()
viewDidLoad中()
self.navigationItem.hidesSearchBarWhenScrolling = false
self.navigationItem.searchController = self.searchController
self.navigationController?.navigationBar.isTranslucent = false
self.extendedLayoutIncludesOpaqueBars = true
答案 1 :(得分:2)
仅将下面显示的代码放在-(void)viewDidLoad方法中:
-(void)viewDidLoad
{
self.extendedLayoutIncludesOpaqueBars = true;
self.navigationController.navigationBar.translucent=false;
}
并确保将导航栏半透明的属性设置为false,因为如果为true,则导航栏需要其下方的内容来反映半透明效果。有关更多详细信息,请参阅this post
有时可能会由于Controller中某些组件(视图)违反某些约束规则而发生。
答案 2 :(得分:0)
据我所记得,我建议您使用UITableViewController
代替嵌入了UIViewController
的{{1}}。
此方法的最大优点是UITableView
已经默认内置了许多此类内容(例如UITableViewController
),因此您不必处理许多此类错误,将UIRefreshControl
手动添加到UIRefreshControl
总是对我来说有点麻烦。
通常,您会尽可能尝试使用UIViewController
,唯一无法使用的地方是UITableViewController
无法占据整个{{ 1}}。
Check out the documentation on UITableViewController for more info.
编辑:另外,如果您可以发布实际上是在获取数据的代码,这将很有用,因为很多时候这也可能成为问题。
答案 3 :(得分:-1)
在viewDidLoad中尝试此代码:
navigationController?.navigationBar.isTranslucent = true
或在故事板中设置
它帮助了我。