ImageView 的 UIView 动画帧

Posted

技术标签:

【中文标题】ImageView 的 UIView 动画帧【英文标题】:UIView animate frame of ImageView 【发布时间】:2013-05-18 17:54:37 【问题描述】:

我正在尝试在点击按钮时向 UIImageView 添加动画。当点击按钮时,我希望 imageView 在大小增加的同时向右移动。我试过这段代码,但 imageView 的动画不正确。

- (IBAction)bA:(id)sender 
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    [UIView setAnimationDuration:0.5];
    CGRect frame = imageView.frame;
    frame.origin.x = frame.origin.x + 30;
    frame.size.hight = frame.size.hight + 20;
    frame.size.width = frame.size.width + 20;
    imageView.frame = frame;
    [UIView commitAnimations];

此代码使 imageView 稍微向右移动,然后再返回。奇怪的行为,我应该怎么做才能同时为大小和原点设置动画?

【问题讨论】:

【参考方案1】:

问题是您打开了自动布局。使用自动布局,您无法更改某些内容的框架,因为布局会出现并再次将其更改回来。

要么关闭自动布局,要么通过更改此视图的约束而不是其框架来设置动画。

【讨论】:

这是我书中关于这个问题的部分:apeth.com/iosBook/ch17.html#_animation_and_autolayout 是否可以在一个特定的视图控制器上关闭自动布局? 如果您使用的是笔尖/xib,您可以关闭该笔尖的自动布局。或者,您可以通过说 imageView.translatesAutoresizingMaskIntoConstraints = NO 来关闭此图像视图的自动布局。 这是我书中关于自动布局的部分:apeth.com/iOSBook/ch14.html#_autolayout 是的,可能。对于那个很抱歉。 - 如果您不想为整个笔尖/情节提要关闭自动布局,也许最好的解决方案是按照我之前的建议为约束设置动画(或将约束更改为动画的一部分)。自动布局使动画比以前复杂得多;他们是彼此的敌人。在我看来,这是 iOS 6 最大的问题。

以上是关于ImageView 的 UIView 动画帧的主要内容,如果未能解决你的问题,请参考以下文章

android开发,ImageView加了逐帧动画。但放入WindowManager中,动画为啥实现不了

如何为 UIView 关键帧动画设置动画曲线(`func UIView.animateKeyframes()`)

动画 UIView setFrame 在每个动画帧上强制 drawRect

UIView 帧动画“摆动”

ios怎样在imageView实现动画

使用自动调整子视图大小为 UIView 帧大小更改动画