ios – 在控制器转换期间动画UINavigationController高度

前端之家收集整理的这篇文章主要介绍了ios – 在控制器转换期间动画UINavigationController高度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在设计一个 swift的iOS应用程序,我在控制器转换期间遇到动画困难.具体来说,我已经实现了一个UINavigationControllerDelegate,用于监听推送某个视图的时间.按下此视图时,我想隐藏屏幕底部的一个栏.我的代码几乎完美地运行,但是每当我在导航控制器的高度上开始动画时,当前视图(正被删除)正确地设置其高度的动画,但是被推动的新控制器已经具有新的高度.动画.要为它添加一些代码,从我的UINavigationControllerDelegate的willShow viewController函数调用以下函数

func animatePlayerVisibility(_ visible: Bool) {

    if visible == showingPlayer {
        return
    }
    showingPlayer = visible

    let height: CGFloat = visible ? 56.0 : 0.0
    self.view.layoutIfNeeded()
    UIView.animate(withDuration: 0.35) {
        self.playerHeight.constant = height
        self.viewBottom.constant = height
        self.view.layoutIfNeeded()
    }
}

‘playerHeight’是对玩家容器视图高度的约束的IBOutlet. ‘viewBottom’也是顶部容器视图底部和屏幕底部之间的IBOutlet约束.基本上,只要这两个约束一起动画,它应该看起来不错.

为了帮助可视化图形错误,我编辑了这一行

self.viewBottom.constant = height

self.viewBottom.constant = height * 2.0

我创建了一张imgur专辑,其中列出了实际的错误行为:
http://imgur.com/a/znAim

如您所见,当新控制器已具有新的动画大小时,旧视图控制器会正常动画.

这是我的故事板的布局:

Storyboard

任何帮助将非常感激.我一直试图解决这个问题一段时间没有成功.

编辑:未应用* 2的动画视图.
https://imgur.com/a/2a5Sw

解决方法

你有没有想过不使用UINavigationController?也许使用ChildViewControllers机制会更容易.然后使用它你可以使用强大的自动布局,并有更多的动画控制(在你的情况下高度)

有关此here的更多信息

猜你在找的iOS相关文章