ios - 动画 UISearchBar 框架的宽度

标签 ios uisearchbar

是否可以为 UISearchBar 的框架宽度设置动画?我发现当我应用 uiview 动画来扩大搜索栏的边界时,它会立即弹出到最终结果,就好像该对象在内部控制着它的动画方式并且不允许我顺利地对其应用我自己的动画。

如果我为它平滑移动的位置设置动画,但我怀疑文本输入根据取消按钮的存在进行调整这一事实可能意味着我们没有公共(public)访问权限来通过 UIView 动画为宽度设置动画。下面的示例代码段将条从 x = 0 滑动到 100,但将宽度弹出到 600 像素宽。

CGRect searchBarFrame = self.searchViewController.searchBar.frame;
searchBarFrame.origin.x = 100;
searchBarFrame.size.width = 600;
[UIView animateWithDuration:1.0 
                      delay:0.0 
                    options:0 
                 animations:^{
                     self.searchViewController.searchBar.frame = searchBarFrame;
                 }
                 completion:^(BOOL completion){
                 }];

最佳答案

由于内部 View 强制调整大小而忽略动画,因此 UISearchBar 存在一个“问题”。然而,这可以通过使用 -layoutSubviews 来克服。我在下面的项目中包含了扩展和收缩代码

[UIView animateWithDuration:.3
                 animations:^ {
                     CGRect newBounds = locationSearch.frame;
                     newBounds.size.width += 215; //newBounds.size.width -= 215; to contract
                     locationSearch.frame = newBounds;
                     [locationSearch layoutSubviews];
                 }];

希望这对您有所帮助。

关于ios - 动画 UISearchBar 框架的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9571995/

相关文章:

ios - 如何使用 SwiftUI 创建带有刻度线的 slider ?

ios - UiSearchBar 用于 map ,例如使用 Swift 进行地址搜索

ios - 添加标签栏后搜索栏放在导航下方

iOS 修复 UITableViewController 顶部的搜索栏?

ios - UISearchController 未调用的行数

ios - UITextView 不会将输入工具栏切换到自定义键盘

ios - 来自 json 数组的 TableView 中的 imageView

ios - 如何在 iOS 中将 UISearch 栏设置为 UiActionSheet?

ios - Swift 4 - 在未来的精确时钟时间启动计时器

ios - 更改Master宽度后刷新UISplitViewController