【问题标题】:UIView animate frame of ImageViewImageView 的 UIView 动画帧
【发布时间】: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 稍微向右移动,然后再返回。奇怪的行为,我应该怎么做才能同时为大小和原点设置动画?

【问题讨论】:

    标签: iphone ios animation uiview frame


    【解决方案1】:

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

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

    【讨论】:

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