UIView动画未按预期工作

Mal*_*loc 1 uiimageview uiviewanimation ios

我有两个UIImageView填充视图控制器,第一个填充上半部分,第二个填充下半部分.我直接在storyboard文件中设置它们.

在该viewDidLoad方法中,我设置代码以便为两者执行动画UIImageView,因此它看起来像一个被打开的篮子(第一个UIImageView移动到顶部直到它离开视图,第二个UIImageView移动到底部直到它离开视图的视图).

到目前为止这是我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    CGRect basketTopFrame = self.basketTop.frame;
    basketTopFrame.origin.y = -basketTopFrame.size.height;

    CGRect basketBottomFrame = self.basketBottom.frame;
    basketBottomFrame.origin.y = self.view.bounds.size.height;

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelay:1.0];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

    self.basketTop.frame = basketTopFrame;
    self.basketBottom.frame = basketBottomFrame;

    [UIView commitAnimations];

}
Run Code Online (Sandbox Code Playgroud)

但是行为与我期望的不同,顶部框架没有移动,底部框架从左上到下动画(原点位置,而不是移出视图).

这是UIImageViews我在故事板中设置的位置: 在此输入图像描述

这是UIImageViews我启动应用程序的时候:

在此输入图像描述

这是UIImageViews应用程序完成动画(viewDidLoad)的时候: 在此输入图像描述

请注意,此代码适用于Xcode 4.2,但自从升级到Xcode 4.5并使用Storyboard后,我开始遇到此问题.Thanx提前.

jrt*_*ton 5

您可以在故事板上启用自动布局.在这种情况下,视图组件在viewDidLoad中没有有效的帧值,因此您的代码将无法工作.

您可以通过在故事板中选择文件检查器并取消选中"使用Autolayout"来禁用自动布局.

无论如何,这是从中开始动画的错误方法.尝试将代码移动到viewDidAppear.