导航栏在动画期间不反映新的文本属性到前一个视图控制器

Posted

技术标签:

【中文标题】导航栏在动画期间不反映新的文本属性到前一个视图控制器【英文标题】:Navigation bar doesn't reflect new text attributes during animation to previous view controller 【发布时间】:2013-12-22 03:28:26 【问题描述】:

有 2 个视图控制器:vc1vc2

vc1 推送 vc2vc2 是顶视图控制器,我更改了导航栏的 titleTextAttributes。文本正在使用新属性,一切都很好。

问题: 当用户按下 vc2 上的返回按钮并开始过渡动画时,前一个视图控制器 (vc1) 的标题仍使用旧属性绘制,并且只有在过渡动画结束时才会立即更改为新属性。看起来很奇怪。

我期望并希望 vc1 立即采用新属性。实际上属性是设置的,但过渡动画并没有反映它。 看起来系统正在某个地方缓存一些东西,但我不知道是什么以及在哪里。

【问题讨论】:

您希望 vc1 标题使用之前的属性,还是希望 vc2 属性保持原位? @LeoNatan 我希望 vc2 属性保持不变,澄清了我的问题 【参考方案1】:

我得出结论,这是 ios 7 中的错误之一。在同一个动画中,我看到影响导航栏按钮位置的不一致(它们在动画期间从一个位置跳到另一个位置)。

同时解决了原来的问题。为了强制之前的视图控制器在动画开始之前用新属性重绘它的标题,我们可以将它的标题设置为其他字符串,然后再返回原始字符串。然后动画反映了新的属性。

【讨论】:

以上是关于导航栏在动画期间不反映新的文本属性到前一个视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

导航栏在推送到新视图控制器时会缩小

UINavigationBar 立即消失,而带有动画的 pushViewcontroller 为真

导航栏在第二次和后续出现时隐藏在视图控制器上

动画期间键盘和文本视图之间的间隙

导航栏在 iPhone XS Max swift 上关闭视图控制器上的视图

我的导航栏在我的 TableView - Swift