2012-10-14 53 views
0

我想通过动画使UIImageView的宽度更大。我有一个UIView和故事板上制作的UIImageView。我想要达到的目的是让它看起来像是从左向右缩放并保持其原始位置。我已经尝试了下面的代码,但它所做的是从其父视图的左上角为其动画图像视图,并将它移动并缩放,直到它从一开始就达到该位置并进行缩放。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]; 

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

+0

我注意到,当禁用整个故事板的自动布局时,动画方式正确播放。但是,有没有办法实现这一点,而不必禁用自动布局? – Mike

+0

如果您对问题没有足够的重视,可能需要组装一个小型示例项目来演示您的问题,然后将其放在GitHub上供人们试用。 –

回答

0

有点迟来的答案,但我解决了这个问题。看起来,如果自动布局被启用,你不能在代码中改变视图框架。相反,你需要动画视图,您可以在故事板设置的限制,然后动画像这样:

[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,因为它会更新约束。