繁体   English   中英

iOS13 - 带有自定义 hidesSearchBarWhenScrolling 行为的 UITableView + UISearchController

[英]iOS13 - UITableView + UISearchController with custom hidesSearchBarWhenScrolling behavior

在 iOS 13 上,如果将hidesSearchBarWhenScrolling设置为 true,视图控制器将隐藏搜索栏,您必须向下滚动才能显示它。 如果您将其设置为false则它会立即显示并且不会消失。

我认为这是一种合理的行为,假设最终用户都熟悉 Apple 产品的工作方式。 鉴于情况似乎并非如此,我想在第一次访问时显示搜索栏,但是如果用户开始向上滚动,搜索栏将被隐藏。 所以这是真/假的混合行为。

这适用于 iOS12,我在viewDidAppear设置了hidesSearchBarWhenScrolling = true ,但现在在 iOS 13 上并非如此。 表格滚动,但搜索栏保持在顶部,而不是与表格视图一起滚动(顺便说一句,这只是因为屏幕没有再次呈现)。

知道如何去做吗? 我尝试更改 tableview 的内容偏移量,但真的没有运气。

对我来说,它在viewDidLoad()方法中添加以下行后起作用:

navigationController!.navigationBar.sizeToFit()

无需指定hidesSearchBarWhenScrolling因为我认为默认情况下它是true ,但是如果您仍然看到搜索栏,那么您可以将其设置为true以隐藏它。

我遇到了和你一样的问题,看起来这个问题只出现在 iOS 13 中。 在 iOS 14 中,您的解决方案完美运行。 要使其在 iOS 13 中工作,您需要添加

self.navigationItem.hidesSearchBarWhenScrolling = true
self.navigationController?.view.setNeedsLayout() // add this line

viewDidAppear

它适用于模拟器 iOS 13.7 我希望它也适用于你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM