iOS 11搜索栏平滑消失

9

我遇到了一个小问题,我在我的应用中实现了新的iOS 11样式搜索栏,并且注意到它消失的动画与例如消息中的不同。它更快,但不太平滑。

有人曾经遇到过这个“问题”吗?

以下是我所使用的代码:

searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.delegate = self

if #available(iOS 11.0, *) {
    navigationItem.searchController = searchController
} else {
    tableView.tableHeaderView = searchController.searchBar
    searchController.searchBar.barTintColor = .white
    searchController.searchBar.layer.borderColor = UIColor.white.cgColor
    searchController.searchBar.layer.borderWidth = 1
}
definesPresentationContext = true
searchController.searchBar.placeholder = "all_search".localized

编辑: 在此输入图片描述

我不知道这是否能帮助您,但我正在以正常的速度滚动。谢谢。


你能否附上相应的GIF吗? - Krunal
你修好了吗? - Rikh
@Rikh 还没有。你呢? - Nicolas Charvoz
1
@NicolasCharvoz 不,还是一样的问题。我搜索了一下并尝试将 navigationBar 设置为半透明,还设置了 extendedLayoutIncludesOpaqueBars 属性,但似乎都没有用。 - Rikh
1
@NicolasCharvoz 尝试在故事板中将你的 UITableView 约束从安全区域改为父视图。这对我有用。 - Rikh
4个回答

3

添加

self.extendedLayoutIncludesOpaqueBars = true

为了解决我的viewDidLoad问题,你的导航栏不能是半透明的,并且请注意将extendedLayoutIncludesOpaqueBars = true属性赋予我的主视图,该视图包含表格视图。


当自定义导航栏以使其背景不透明时,视图控制器的布局会缩进,因此视图的顶部在导航栏的底部结束。(它在栏下不可见,因此被剪切)扩展布局会延长滚动视图的移动距离,从而延长动画的持续时间。 - Scott Ahten

1
当您的表视图没有完全到达视图的顶部时,就会出现这种情况。确保您的表视图位于导航栏的“后面”,并使用扩展边缘和在导航栏不透明的情况下扩展不透明边缘。

我遇到了这个问题,但由于我的导航栏不是半透明的,所以我无法将表视图放在导航栏下面。你有什么想法吗? - Jerland2

0

你可以试一下这个方法,对我来说有效。我使用了另一个UIViewController作为searchResultsUpdater,并将extendedLayoutIncludesOpaqueBars设置为true。

searchResultsUpdater.extendedLayoutIncludesOpaqueBars = true
searchController.searchResultsUpdater = searchResultsUpdater

-1
UIView.animate(withDuration: 1, animations: { 
//your codes to implement
}, completion: nil)

以秒为单位更改 withDuration:


1
问题在于我不处理动画,这是iOS 11中的本地动画,所以我没有任何关于它的编码。 - Nicolas Charvoz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接