【问题标题】:UISearchBar in UITableViewHeader strange animation on iOS 7/8iOS 7/8 上 UITableViewHeader 中的 UISearchBar 奇怪动画
【发布时间】:2014-01-01 04:35:06
【问题描述】:

我们有一个 SearchTableViewController 类,它拥有一个 UISearchBar 作为其 UITableViewtableViewHeader。 我们还使用了一个UISearchDisplayController,其委托(searchResultsDelegatesearchResultsDataSource)与持有包含 searchBar 的 tableView 的控制器相同。

搜索本身很好用,但是进入/退出搜索模式的动画真的很奇怪:

Weird animation 1

在另一个视图控制器(SearchTableViewController 的子类)中,问题更加明显:

Weird animation 2

我已经尝试实现各种UISearchDisplayDelegate 方法(例如-(void)searchDisplayControllerWillBeginSearch:),但它们要么被调用得太晚(当动画已经完成时),要么仅在给UISearchBars 文本字段提供焦点时调用。 是否有任何我遗漏的方法可以让我更改动画之前它发生? 另外,请注意导航栏在第一个视频中是如何立即消失的。我尝试在多个位置手动将其设置为“不隐藏”,但没有任何改变。

我们的navigationBar 被配置为是半透明的,如果这有什么不同的话。 在 iOS 6 上,一切正常,searchBar 平滑地将 navigationBar 向上推。

如有必要,将发布代码,但我们不会以任何方式修改标准行为(设置框架、覆盖委托方法等)。

任何想法可能是奇怪动画的原因吗?

【问题讨论】:

    标签: ios uitableview uisearchbar


    【解决方案1】:

    我在 iOS 7 技术讲座上与一位 Apple 工程师交谈,他也帮不了我。经过进一步调查,我发现第一个问题是 iOS 7(.0.4) 的默认行为。

    更新:该错误在 7.1 中仍然存在。

    第二次更新:该错误在 8.1 中仍然存在。

    第三次更新:该错误在 8.4 中仍然存在。

    第四次更新:该漏洞在 9.2 中仍然存在

    重现步骤:

    1. 在 Xcode 5/iOS 7 SDK 中创建一个新的通用 Master-Detail 示例应用程序。
    2. 在 MasterViewController 的 TableView 中添加一个 UISearchBar(编辑: 对于 iOS 8,使用“搜索栏和搜索显示控制器”)(不管是在 InterfaceBuilder 中还是在代码中)
    3. 运行项目,启用慢速动画并点击搜索栏。
    4. 开始/取消搜索时的动画在 iPad 上很奇怪,但在 iPhone 上看起来不错:Template project run on the iPad。 我提交了一份关于它的错误报告,如果这个问题得到解决,我会更新。

    关于第二个奇怪的动画: 问题是第一个视图控制器是从 nib 创建的,而第二个是通过编程创建的。因此,缺少以下调用:

    [self setAutomaticallyAdjustsScrollViewInsets:YES];
    [self setExtendedLayoutIncludesOpaqueBars:YES];
    

    viewDidLoad: 中包含这两行后,动画看起来“很好”——也就是说,与示例项目中的相同。

    【讨论】:

    • 使用setExtendedLayoutIncludesOpaqueBars:YES 的动画对我来说现在看起来好多了,在使用UISearchDisplayController 的表格标题视图中使用UISearchBar。但它仍然不完美。似乎是 UIKit 中的一个错误。
    • [self setExtendedLayoutIncludesOpaqueBars:YES]; 为我解决了问题。非常感谢!
    【解决方案2】:

    我的回答here帮助了我对奇怪动画行为的具体情况:

    我发现了

    self.navigationController.navigationBar.translucent = YES;
    

    让我的动画少了错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      相关资源
      最近更新 更多