Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当我更改其中一个内容时,如何修复UIStackView的跳跃';使用UIView.animate设置大小_Ios_Swift - Fatal编程技术网

Ios 当我更改其中一个内容时,如何修复UIStackView的跳跃';使用UIView.animate设置大小

Ios 当我更改其中一个内容时,如何修复UIStackView的跳跃';使用UIView.animate设置大小,ios,swift,Ios,Swift,我试图在UIStackView中获得一些可折叠的UIView。但当动画开始时,所有对象都会跳跃,因此动画并不平滑。我怎样才能修好它 根据StackOverflow和其他博客帖子,我尝试使用setNeedsLayout()和layoutifneed(),但仍然没有成功。我试图直接在动画UIView和UIStackView上调用它们。此外,我还尝试使用UIView.frame和高度约束更改动画UIView的高度。第一种情况甚至没有改变大小,第二种情况就是这个bug。 另外,我尝试使用UIView.A

我试图在
UIStackView
中获得一些可折叠的UIView。但当动画开始时,所有对象都会跳跃,因此动画并不平滑。我怎样才能修好它

根据StackOverflow和其他博客帖子,我尝试使用
setNeedsLayout()
layoutifneed()
,但仍然没有成功。我试图直接在动画UIView和UIStackView上调用它们。此外,我还尝试使用
UIView.frame
和高度约束更改动画UIView的高度。第一种情况甚至没有改变大小,第二种情况就是这个bug。 另外,我尝试使用
UIView.AnimationOptions.allowAnimatedContent
,运气不好

UIView.animate(withDuration: 1,
                           delay: 0.0,
                           usingSpringWithDamping: 0.7,
                           initialSpringVelocity: 1,
                           options: [UIView.AnimationOptions.allowAnimatedContent], animations: {
                self.heightConstraint.constant = 60

                self.rowsParent.isHidden = true
                self.detailsParent.isHidden = true
                self.setNeedsLayout()
                self.layoutIfNeeded()

                DashboardVC.shared!.mealsParent.setNeedsLayout()
                DashboardVC.shared!.mealsParent.layoutIfNeeded()
            })
这段代码有望平滑地改变UIView的大小,因此UIStackView的高度也将不断变化。 但是UIView高度不断变化,但父视图的高度立即变化

Gif:

但是。UIView高度不断变化,但父视图的高度立即变化,我认为这是意料之中的。也就是说,如果您在1000秒内将0设置为1000,您会立即看到高度设置为1000,甚至认为直到1000秒后才会发生。但我不确定我是否也必须亲自测试。@亲爱的,是的,如果动画需要1000秒,则子
UIView
将更改其大小1000秒(在您的情况下为每秒1点),但父
UIStackView
将立即更改其大小为1000秒。这种效果是不可取的。它需要使父级
UIStackView
根据当前子级大小更改其大小。不到1000秒后的大小。因为在这种情况下,我们会在粘贴到post.But的gif上看到类似的动画错误。UIView高度不断变化,但父视图的高度立即变化,我认为这是意料之中的。也就是说,如果您在1000秒内将0设置为1000,您会立即看到高度设置为1000,甚至认为直到1000秒后才会发生。但我不确定我是否也必须亲自测试。@亲爱的,是的,如果动画需要1000秒,则子
UIView
将更改其大小1000秒(在您的情况下为每秒1点),但父
UIStackView
将立即更改其大小为1000秒。这种效果是不可取的。它需要使父级
UIStackView
根据当前子级大小更改其大小。不到1000秒后的大小。因为在本例中,我们在贴到帖子的gif上看到了类似的动画错误。