IOS:用UIImageViewanimation

我有两个imageViews,我称之为firstView和secondView; 我必须做一个animation,移动第三个imageView,我称之为imageView3。 这imageView3里面firstView,我做这个代码

[UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.5]; [imageView3 setFrame:frameinSecondView]; [UIView commitAnimations]; //[imageView3 removeFromSuperview]; //[secondView addSubview:imageView3]; 

与此代码,我可以将imageView3移动到secondView,但问题是,我无法设置imageView3在正确的框架“frameinSeconView”; 相反,如果我使用评论的代码

 [imageToMove removeFromSuperview]; [scrollViewAlfabeto addSubview:imageToMove]; 

imageView3进入正确的框架,但我没有看到animation,因为当它开始animation时,imageview3消失从firstView广告出现时,它进入secondView

我怎样才能解决有一个正确的animation,这两个imageViews之间有一个正确的框架。

你正在试图从1到2传递imageView3的权利? 将它从imageView1中移除并放置在windowView上,从1到2执行animation并等待结束animation以从windowView中移除并插入到imageView2中

如何等待 ? …有一个[句子的东西]结构这样做,但我不知道它是如何,而不是(因为从来没有发现如何)我开始使用“animation块”:D

什么是animation块? 块:表示一个动作的对象; 下面是一个使用块对象block1,block2(CODE PARTC)

  [UIView animateWithDuration:2 delay:0 options:UIViewAnimationCurveEaseIn animations: block1 completion: block2 ]; 

这意味着它将执行在block1中定义的动作,就好像它们在开始提交animation句子中一样,并且在完成之后(美丽的部分)它们将在block2中执行动作! :d!

但是什么是块? 好…这是一个F —- NG块!

返回void的块(CODE PARTA):

  void (^block1)(void) = ^{ centerPortrait.frame = frame1; if (lookingMenu==NO) listTableView.frame = frameT1; }; 

返回BOOL的块(完成之后:你需要一个bool)并且里面有另一个animation(CODE PARTB)

  void (^block2)(BOOL) = ^(BOOL got){ [UIView animateWithDuration:halfDuration delay:0 options:UIViewAnimationCurveEaseIn animations:^{ centerPortrait.image = image; centerPortrait.frame = frame2; if (lookingMenu==YES) listTableView.frame = frameT2; } completion:nil ]; }; 

我用这个来做一个图像的假旋转hohohoho反正如果你没有得到它,顺序是PARTA,B,C:P

阅读: http : //developer.apple.com/library/ios/#documentation/cocoa/Conceptual/Blocks/Articles/bxGettingStarted.html%23//apple_ref/doc/uid/TP40007502-CH7-SW1

是我在哪里得到如何使用块:D和heres一个伟大的RAYWENDERLICH有用的教程: http ://www.raywenderlich.com/2454/how-to-use-uiview-animation-tutorial

希望能帮助到你!