是否可以为 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/