Tru*_*an1 12 core-animation ios swift uisearchcontroller
我在UISearchController嵌入导航控制器的控制器中展示了一个.将出现默认动画,其中搜索框从导航栏的顶部向下滑动.
在我的情况下,这不是一个好的用户体验,因为当用户点击UITextField屏幕中间的a时,我会显示搜索.我想做的是UITextField浮动到顶部并变形到搜索框,但我无法想象如何做到这一点.
这就是我所拥有的:
class PlacesSearchController: UISearchController, UISearchBarDelegate {
convenience init(delegate: PlacesAutocompleteViewControllerDelegate) {
let tableViewController = PlacesAutocompleteContainer(
delegate: delegate
)
self.init(searchResultsController: tableViewController)
self.searchResultsUpdater = tableViewController
self.hidesNavigationBarDuringPresentation = false
self.definesPresentationContext = true
self.searchBar.placeholder = searchBarPlaceholder
}
}
private extension ShowAddressViewController {
@objc func streetAddressTextFieldEditingDidBegin() {
present(placesSearchController, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
我希望文本字段能够飞到导航栏,而不是从顶部开始搜索.我所追求的是与iOS 11 File应用程序相同的效果:
它在屏幕中间有一个文本字段,然后在点击它时动画到导航栏.但在我的情况下,文本字段在屏幕中较低,而不是导航栏的原始部分.
Ale*_* D. 14
UISearchController是一个非常难以定制的组件.根据我的经验,我可以说,最好是按原样使用它而不需要任何激烈或重要的定制.否则,自定义可能会导致代码混乱,全局状态变量,UIView层次结构的运行时技巧等.如果仍然需要特定的行为,最好从头开始实现搜索控制器或使用第三方.
看起来UISearchController设计用于与表头视图中安装的UITableView和UISearchBar配合使用.甚至苹果官方代码示例和文档都提供了这样的使用示例(请参阅UISearchController).尝试在其他地方安装UISearchBar经常会导致搜索栏框架,位置,抽搐动画,方向更改等许多丑陋的副作用.
从iOS 11开始,UINavigationItem获得了searchController属性.它允许将搜索控制器集成到您的导航界面中,因此搜索看起来与iOS文件或iOS AppStore应用程序完全相同.UISearchController的行为仍然与另一个组件耦合,但我相信它总是比与UITableView耦合更好.
从我的角度来看,您的问题有几种可能的解决方案.我将按照增加的努力提供它们,这是实施所需的:
我希望这有帮助.
更新:
我已经实现了我在第3点描述的方法.以下是它的工作原理:
您可以在此处找到代码段.请注意,这只是代码示例,可能存在未处理的情况.然后检查两次.
| 归档时间: |
|
| 查看次数: |
3154 次 |
| 最近记录: |