iOS 11 的 Refresh Controller 和 navigationBar 问题将 prefersLargeTitles 设置为 true

Posted

技术标签:

【中文标题】iOS 11 的 Refresh Controller 和 navigationBar 问题将 prefersLargeTitles 设置为 true【英文标题】:iOS 11 issues with Refresh Controller and navigationBar that has prefersLargeTitles set to true 【发布时间】:2017-10-05 21:30:48 【问题描述】:

我正在使用导航控制器,在该导航控制器中,我有一个带有 tableview 的 VC,它拥抱 superView 的顶部、底部、左侧和右侧。当我将 self.navigationController?.navigationBar.prefersLargeTitles 设置为 false 时,一切正常。但是当我将其设置为 true 时,我必须将其拖得很远才能让我的刷新控制器触发刷新。

只需点击一个单元格即可解决此问题,该单元格然后进入详细视图,然后从详细视图按后退按钮以返回带有主表视图和刷新的 vc。之后,刷新的拉动与大型标题完美配合。很奇怪!

我的表格视图有一个非常基本的设置。我的实际项目有一个更复杂的设置,但为了隔离这个问题,我用相同的 tableview 创建了一个更简单的项目,问题仍然存在。有没有其他人看到这个问题?我认为这是苹果方面的一个问题,但我想检查我是否做错了什么。

我正在使用带有 Xcode 9 的 swift 4 和 ios 11.0.2。

动画师开始制作动画,但是当它达到某个特定值(应该刷新的点)时,它就停止了。当我继续拉得越来越远时,它会刷新。但它应该更早地完成它。我必须下拉到导航栏几乎延伸到整个屏幕长度的位置。请参阅屏幕截图。

【问题讨论】:

您找到解决方案了吗? 遇到同样的问题很难。你解决了吗? 是的,当滚动视图到达某个偏移量时,我会手动调用刷新控制器。您需要根据滚动视图的设置方式来确定该偏移量。当用户向下滚动并且较大的标题变小时,我也遇到了问题。由于某种原因,动画不流畅。我希望这是他们修复的苹果问题。 【参考方案1】:

你可以尝试设置self.extendedLayoutIncludesOpaqueBars = YES;

【讨论】:

【参考方案2】:

您可以通过将 tableview.top 的约束添加到 ViewController 的 View.top 而不是 topLayoutGuide 来尝试此操作

【讨论】:

我已经尝试过了,但它并没有解决问题。如果将其设置为视图顶部,则启用大标题时会出现很多问题。

以上是关于iOS 11 的 Refresh Controller 和 navigationBar 问题将 prefersLargeTitles 设置为 true的主要内容,如果未能解决你的问题,请参考以下文章

DBMS_Snapshot.refresh 在 11g 上不起作用,物化视图错误

Spark SQL SaveMode.Overwrite,获取 java.io.FileNotFoundException 并需要'REFRESH TABLE tableName'

iOS swift pull to refresh mixes with tableview

iOS开发UI篇—控制器的View的创建

React-Refresh使用心得

View Controller Nav 中的 iOS Refresh 按钮:单击时重新加载从解析的 JSON 创建的所有 tableViewCell