UISearchBar 与状态栏动画过渡错误 ios7
Posted
技术标签:
【中文标题】UISearchBar 与状态栏动画过渡错误 ios7【英文标题】:UISearchBar with statusbar animation transition bug ios7 【发布时间】:2013-10-04 23:09:39 【问题描述】:UISearchBar 动画有问题。
状态栏打开时动画有问题。否则没关系。 我以编程方式创建了表格视图和搜索栏。 uisearchbar 位于 tableview 的 headerview 中。保持这种状态很重要。我知道当您使用情节提要时它可以正常工作。
我创建了一个非常基本的示例项目,因为我认为这是向您展示问题的最简单方法。 我花了几个小时来找到解决方案,但我就是想不通。任何帮助将不胜感激。
这里是示例项目的链接:SearchBarProject!
【问题讨论】:
你解决了这个问题我有同样的问题并打开了另一个问题 --> ***.com/questions/19467945/… 不,我最终使用了 displaySearchBarInNavigationBar 方法并将搜索栏放入导航栏。这不完全是我想要的,但它会成功的。如果您找到解决方案,您可以在此处将其链接为 anwser 吗?谢谢 【参考方案1】:我发现了
self.navigationController.navigationBar.translucent = YES;
让我的动画少了错误
【讨论】:
这对我有用,虽然很烦我必须补偿颜色变化。【参考方案2】:我认为这是 ios 7 的错误。 Apple 提供了一个uitableview search example 应用程序。完成编辑搜索栏时也有同样的问题。 IOS 6没有任何问题
【讨论】:
是的,我认为这也是一个错误。我看到了那个示例项目,是的,它也有类似的问题。我想不出办法解决它。我最终使用了 displaySearchBarInNavigationBar 方法并将搜索栏放入导航栏中。这不完全是我想要的,但它会成功的。我希望他们能尽快修复它,或者有人找到修复它的方法。 我发现 IOS 7 有问题,你必须像这样设置 edgesForExtendedLayout:self.edgesForExtendedLayout = UIRectEdgeNone; 这样更好,但动画看起来仍然有问题。 这使我的动画正确,但是导航栏的半透明被带走了,所以颜色与其他视图控制器不匹配。也许在所有视图控制器上使用它来保持颜色的一致性会起作用【参考方案3】:只需在 UISearchBar 中添加一个子层并更改视图的背景颜色即可使动画几乎完美
- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
self.view.backgroundColor = RGB(199,199,204);
self.fixSearchAnimation = [[UIView alloc] initWithFrame:CGRectMake(0, -20,320, 40)];
self.fixSearchAnimation.backgroundColor = RGB(199,199,204);
[self.searchController.searchBar addSubview:self.fixSearchAnimation];
[self.searchController.searchBar sendSubviewToBack:self.fixSearchAnimation];
- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
self.view.backgroundColor = [UIColor whiteColor];
[self.fixSearchAnimation removeFromSuperview];
在慢速模式下,您仍然可以在搜索栏原始子视图和新视图之间看到一条细线,但对于用户来说并不是很明显,如果这打扰了您,您可以深入研究 UISearchbar 的视图层次结构并将视图在正确的位置。
【讨论】:
以上是关于UISearchBar 与状态栏动画过渡错误 ios7的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationController 过渡动画触发太快
UIToolbar中的iOS8 UISearchBar没有左填充
UINavigationController 包含、iOS7 和状态栏。漏洞?