如何在 UINavigationController 的视图下为 UIView 设置动画

Posted

技术标签:

【中文标题】如何在 UINavigationController 的视图下为 UIView 设置动画【英文标题】:How can I animate a UIView underneath the UINavigationController's view 【发布时间】:2016-11-14 16:58:59 【问题描述】:

现在我正在制作一个有时直接出现在 NavigationBar 下方的小横幅。这个 UIView 存在于我的应用程序中 UINavigationController 的子类中。

我想在视图消失时在导航栏上方和下方设置横幅视图的动画(而不是将其高度设置为 0 的动画,这可能会导致横幅的子视图出现古怪的事情)。但是,它总是在 navBar 顶部进行动画处理。

我尝试将我的视图发送到后面 (-sendSubviewToBack:) 但是,我并没有看到全部。然后我尝试了-bringSubviewToFront,并给它导航栏的视图。那也没用。

有什么想法吗?

【问题讨论】:

【参考方案1】:

听起来你需要对你的层次结构更加慎重(它回溯得太远了)。这是关于如何更具体地展示您的展示位置的一个很好的答案。 How to send a UIView element backwards in Swift

具体来说,你想用

insertSubview(_:belowSubview:)

并将您的视图直接放在应该隐藏它的导航栏视图下方。

只是提示,您可以调出 UI 调试以获取更多帮助。

【讨论】:

知道了。我使用了 -bringSubviewToFront: 将导航栏向前移动。

以上是关于如何在 UINavigationController 的视图下为 UIView 设置动画的主要内容,如果未能解决你的问题,请参考以下文章

在 UINavigationController 中设置时图像不显示

将 managedObjectContext 发送到 viewController 崩溃

ID:[...] 的 NSManagedObject 已失效

使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?

为啥我似乎必须在 iOS 应用程序委托中键入 window.rootViewController?

UINavigationController - 何时释放推送的视图控制器等