防止 UINavigationItem 的 TitleView 闪烁
Posted
技术标签:
【中文标题】防止 UINavigationItem 的 TitleView 闪烁【英文标题】:Prevent UINavigationItem's TitleView from blinking 【发布时间】:2018-02-12 20:03:34 【问题描述】:我正在使用 UINavigationItem
s titleView
属性在我的 ViewController 的 UINavigationBar
的中心设置视图。问题是,当我用相同的titleView
推送另一个 ViewController 时,它会闪烁。
这是我在 ViewControllers 中设置 titleView
的方法
let view = UIView(frame: CGRect(x: 0, y: 0, width: 40, height: 40))
view.backgroundColor = .red
self.navigationItem.titleView = view
我能做些什么来防止这种情况发生?
【问题讨论】:
如果你设置self.navigationController?.navigationItem
的titleView
而不是self.navigationItem
呢?
你在哪里执行上面的代码?视图加载? viewDidAppear?
您可以在viewWillAppear
方法中设置titleView
,该方法将在视图完全加载之前设置redView,但它仍不会保留在之前的ViewController
中,因为有一个根据 UINavigation 中的 push
或 pop
在每个 viewControllers
之间从左到右或从右到左进行动画转换。
@karnett 我在两个 ViewController 的父级 UIViewConrtroller
内的 viewDidLoad
中执行它。
@Matt.kaaj 我不能禁用过渡动画吗?
【参考方案1】:
我最终使用自定义视图并将其作为子视图添加到UINavigationBar
。我还将 UINavigationItem
s titleView
设置为空白视图,以防止 LargeTitle 出现在我的视图中。
【讨论】:
以上是关于防止 UINavigationItem 的 TitleView 闪烁的主要内容,如果未能解决你的问题,请参考以下文章