ios - 更改 NSLayoutConstraint 时的 SWIFT 动画

标签 ios swift animation uikit nslayoutconstraint

这是我的代码:

func scrollViewDidScroll(scrollView: UIScrollView) {
    if mapHeight.constant < 400 {
            mapHeight.constant = 400
            tableOfRestaraunts.reloadData()
    }
}

func normalSize() {
    if mapHeight.constant == 400 {
            mapHeight.constant = 200
    }
}

当用户滚动 UITableView 时,我的 map 变小,当他触摸任何地方时,它变成默认大小。

我想添加一些动画(这样看起来更流畅)。我已经尝试了一些来自网络的解决方案,但它们没有帮助。有什么建议吗?

最佳答案

与往常一样,您应该调用 layoutIfNeeded 来为布局约束中的更改设置动画。在您的情况下,您应该在包含约束的 View 上调用它(这对我来说不是很明显)。或者在实际动画 block 中使用简单的 self.view.layoutIfNeeded():

该示例为您制作动画,动画需要 0.5 秒才能完成。您可以使用 UIView 的动画 block 的重载来更好地控制动画的细节。

    func scrollViewDidScroll(scrollView: UIScrollView) {
        if mapHeight.constant < 400 {
            UIView.animateWithDuration(0.5) { () -> Void in
                mapHeight.constant = 400
                self.view.layoutIfNeeded()

            }
            tableOfRestaraunts.reloadData()
        }
    }

    func normalSize() {
        if mapHeight.constant == 400 {
            UIView.animateWithDuration(0.5) { () -> Void in

                mapHeight.constant = 200
                self.view.layoutIfNeeded()
            }
        }
    }

更新:我不知道你没有动画 block 。已更新以包含实际的动画 block 。

关于ios - 更改 NSLayoutConstraint 时的 SWIFT 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33870773/

相关文章:

ios - Swift - 如何为 FB Auth 处理来自 FIRUserInfo 的数据?

动画时 z-index on::before 的 CSS 问题

ios - 如何用 UIControl 屏蔽 UIImage?

javascript - JS不加载

javascript - 复合网页动画

ios - 仅更改默认 backBarButtonItem 的位置

ios - UIScrollView 无法使用自动布局和动态约束滚动

ios - 在 Swift 中从 super 的父类(super class)调用方法

ios - 文件不会写入磁盘。我究竟做错了什么?

ios - 如果未设置为初始窗口,则自定义 Segue 不起作用