繁体   English   中英

通过自动调整子视图动画UIView帧大小更改

[英]Animating UIView frame size change with autoresizing subviews

我有一个包含两个子视图的UIView。 我想用动画改变superview的帧大小,并让子视图的大小根据其自动大小的掩码而改变。

[UIView beginAnimations:@"Resize" context:nil];
[UIView setAnimationDuration:1.0];
CGRect frame = self.myView.frame;
frame.size.height += 30.0;
self.myView.frame = frame;
[UIView commitAnimations];

视图self.myView按预期调整大小超过1秒,但子视图会立即调整大小。 有谁知道为什么会发生这种情况以及我如何让子视图动画调整大小?

从我的谷歌搜索,我认为它可能与contentMode属性有关。 不幸的是,我不清楚该财产的作用。 任何帮助将非常感激。

虽然在[UIView commitAnimations]之后我会问你在做什么,但是很难让其他人在没有看到你的代码的情况下给你正确的答案。 不过,很高兴你明白了。 我建议你使用块动画。 通过使用完成块,它们更容易避免这种类型的错误。 例:

[UIView animateWithDuration:1.0
                 animations:^{
                     CGRect frame = self.myView.frame;
                     frame.size.height += 30.0;
                     self.myView.frame = frame;
                 }
                 completion:^(BOOL finished){
                     // whatever you need to do when animations are complete
                 }];

好的,所以我在阅读了以下问题的答案后想出了问题: 动画UIView框架,子视图UIScrollView并不总是动画

在我安排导致的动画之后,我基本上做了一些工作 - 在我的每个子视图上调用layoutSubviews ,这会自动导致这些视图被安排在动画的结束点。 通过在完成这项工作后安排我的动画,我能够解决我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM