【问题标题】:Issue with animation of searchbar in navigationbar when searchDisplayController becomes activeuisearchDisplayController 激活时导航栏中搜索栏的动画问题
【发布时间】:2014-01-09 13:49:48
【问题描述】:

当搜索栏激活时,它会跳转。查看动画 GIF。

结果:http://postimg.org/image/66bdqqgvb/

在 Stackoverflow 上搜索解决方案我发现了以下设置:

    self.edgesForExtendedLayout = UIRectEdgeNone;

结果:http://postimg.org/image/y5gf4bb9b/

跳转消失了,但现在搜索栏不再覆盖状态栏了。

更新

将窗口的背景颜色设置为与搜索字段相同的颜色可以使它看起来很好,尽管这有点像 hack。

【问题讨论】:

  • 请张贴您的故事板的图像,并扩展您的视图控制器场景的文档大纲
  • 他不使用故事板。

标签: ios objective-c statusbar searchbar searchdisplaycontroller


【解决方案1】:

你应该有

self.edgesForExtendedLayout = UIRectEdgeAll;

相反,但这只会让你回到你的第一个状态。因此,我会查看可能导致此问题的其他操作,并参考您在启动/关闭搜索时执行的操作的任何其他信息。您是否在主线程中执行额外的后台操作或动画?

编辑

这里有另一个建议,很少在动画上看起来搜索栏会从您的表格视图中分离出来。所以请仔细检查您的搜索栏是否在您的表格视图中。

【讨论】:

  • 搜索栏在 tableHeaderView 内,搜索栏激活时不执行其他代码。
  • 当您查看第一个 GIF 并等待搜索栏动画到非活动状态时,您可以看到 searchContentsController 没有覆盖底部的整个区域。不包括大约 20px(与 statusbarheight 相同)。这可能是原因吗?
【解决方案2】:

这似乎是 iOS 7 中的一个错误。设置 edgesForExtendedLayout = UIRectEdgeNone; 确实可以修复它,但是您的搜索栏上方有一个栏。我发现的最佳解决方案是让您的导航栏半透明。由于某种原因,动画仅在导航栏不透明时才会中断。

self.navigationController.navigationBar.translucent = YES;

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多