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 和状态栏。漏洞?

iOS:在状态栏顶部动画启动屏幕

我们如何在 iOS 9 中为整个应用程序设置状态栏的 Light Content 样式?

在 iOS7 中将搜索栏与导航栏结合时 UISearchbar 空间为空?