使用 Swift 在 iOS 中平滑搜索栏动画

Posted

技术标签:

【中文标题】使用 Swift 在 iOS 中平滑搜索栏动画【英文标题】:Smooth Search Bar Animations in iOS with Swift 【发布时间】:2017-03-01 17:05:44 【问题描述】:

如何在 ios 10 设置应用中实现流畅的搜索栏动画?我尝试了不同的方法,但似乎都很紧张,尤其是在编辑结束或按下取消按钮时。是否有一些我遗漏的代码或者我的代码做错了什么?我怀疑下面的代码与动画跳帧有关:

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) 
    searchBar.setShowsCancelButton(false, animated: true)


func searchBarCancelButtonClicked(_ searchBar: UISearchBar) 
    self.view.endEditing(true)
    searchBar.setShowsCancelButton(false, animated: true)

【问题讨论】:

【参考方案1】:

这里有一些东西。

    在所有动画过程中,如果您没有在动画内部调用view.layoutIfNeeded() 的最高父视图,它们更有可能看起来很紧张。

    如果搜索栏嵌套在任何类型的滚动视图(包括 tableViews/collectionViews)内,那么可能符合 delaysContentTouches 设置。如果是这种情况,请在 scrollView 内将其设置为 false ,看看这是否有帮助。它还可能使滚动变得不那么容易理解,因此并不总是能让事情变得更好。

    动画永远不会在他们被告知发生的确切时刻发生。它们被放入队列中,然后每隔一段时间就会触发队列中的所有动画。这通常看起来是在同一时刻发生的,但它的差异可能足以使事情与您的预期不同。

here 有很多关于基本 iOS 内容的好信息,您可能会觉得有用,我是 Paul Hegarty's Standford iOS Swift course 的忠实粉丝。

【讨论】:

以上是关于使用 Swift 在 iOS 中平滑搜索栏动画的主要内容,如果未能解决你的问题,请参考以下文章

无法在iOS 11 Swift中平滑地展开文本视图

如何在 Core Animation 中平滑更新动画的 toValue/end 点?

有没有办法在swift 3中平滑对象/模型?

带有webgl的ios8 webview =在网络应用程序中平滑滚动?

iOS - 通过动画将搜索栏从中心移动到导航栏下方(Swift)

如何在 iOS 中平滑放大和缩小 UIButton