viewController.titleView 全宽在过渡时闪烁

Posted

技术标签:

【中文标题】viewController.titleView 全宽在过渡时闪烁【英文标题】:viewController.titleView full width blinking on transition 【发布时间】:2017-02-16 17:50:45 【问题描述】:

我有一个用于 navigationItem.titleView 的自定义视图(不是 UIButton),我做了一个小技巧,通过覆盖 setFrame 方法使它成为全角,这样导航控制器就不会自动调整它的大小以缩小(实现我想要什么 - 全角)我在 viewDidLoad 事件中设置了 titleView .. 问题是,当转换时导航栏进行某种重新定位,我看到我的视图在转换时闪烁并且有点向下然后闪烁回来到它的位置..这真的很烦人的问题,知道这是从哪里来的吗?

已更新-尚未解决-

我的自定义视图不是这样解决的 UIButton(感谢@Sneak)

ios - navigationItem.titleView blinks when updated

【问题讨论】:

ios - navigationItem.titleView blinks when updated的可能重复 不是当视图不是 UIButton 时。我更新了问题以澄清@Sneak 您可以查看评论部分,UIView 也会出现问题,因为没有找到真正的解决方案,但是,您可以查看其他类似的问题:***.com/questions/23451040/… 和 ***.com/questions/3681990/… 可能会提供解决方案,但取决于 OP 代码和设置 我已删除该标志,但我会将副本的评论放在这里以供将来查看。 @Sneak 不知何故,他们主要谈论调整 titleView 大小的问题,我提到我用一个技巧解决了这个问题,但没有任何一个主要暴露了其他问题并且找不到关于它的直接问题。 . 【参考方案1】:

您是否尝试将自定义tileViewautoResizingMask 设置为UIViewAutoresizingFlexibleTopMargin

【讨论】:

【参考方案2】:

在我的情况下,self.view.layoutSubviews() 导致了这个问题。根据official documentation,我改用setNeedsLayout(),所以闪烁消失了! (约束动画也是,但这是另一回事。)注意:layoutIfNeeded() 也会导致自定义导航闪烁。

【讨论】:

layoutSubviews() 解决了动画和闪烁问题。

以上是关于viewController.titleView 全宽在过渡时闪烁的主要内容,如果未能解决你的问题,请参考以下文章