【问题标题】:UIImageView animation not working correctlyUIImageView 动画无法正常工作
【发布时间】:2012-10-04 14:15:24
【问题描述】:

我想通过动画使 UIImageView 的宽度变大。我在故事板中有一个 UIView 和 UIImageView 。我想要实现的是看起来视图从左到右缩放,并保持其原始位置。我已经尝试了以下代码,但它所做的是从其父视图的左上角为图像视图设置动画,并移动和缩放它,直到它到达从一开始就具有的位置和缩放。

[UIView animateWithDuration:4.0f delay:1.0f options:UIViewAnimationCurveEaseOut animations:^{
    CGRect currentFrame = self.imageview1.frame;
    currentFrame.size.width = 150;
    self.imageview1.frame = currentFrame;
}completion:nil];

任何想法为什么会出现这种行为?

【问题讨论】:

  • 我注意到当禁用整个故事板的自动布局时,动画播放正确。但是,有没有办法在不必禁用自动布局的情况下实现这一点?
  • 如果您没有对自己的问题给予足够的关注,可能值得组装一个小示例项目来展示您的问题,然后将其放在 GitHub 上供人们试用。

标签: ios animation uiimageview scaling


【解决方案1】:

答案有点晚,但我解决了问题。如果启用了自动布局,您似乎无法更改代码中的视图框架。相反,您需要为视图的约束设置动画,您可以在情节提要中设置它,然后像这样设置动画:

[self.view layoutIfNeeded];
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{

    self.bottomViewY.constant = -196;

    [self.view layoutIfNeeded];

} completion:nil];

self.bottomViewY 是一个被分配为 IBoulet 的约束。您需要调用 layoutIfNeeded,因为它会更新约束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2021-06-11
    • 1970-01-01
    • 2012-03-03
    • 2017-08-06
    相关资源
    最近更新 更多