2011-11-10 108 views
0

我有兩個imageViews,我叫firstView和secondView;我必須做一個動畫,移動第三個imageView,我稱之爲imageView3。這imageView3裏面的firstView,我做這個代碼IOS:動畫與UIImageView

[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去正確的框架,但我看不到動畫,因爲當它開始動畫,imageview3從廣告的firstView消失出現,當它去secondView

我如何才能解決這個問題,以便在這兩個imageView之間有一個正確的框架。

回答

1

你正試圖從1通過imageView3至2吧? 從imageView1刪除它,並把它放在窗口視圖,執行從1動畫2和等待結束動畫從窗口視圖刪除和插入imageView2

如何等待? ...有一個[句子的東西]結構,做到這一點,但我不知道它是如何,而不是如此(因爲從未發現如何)我開始使用「動畫塊」:D

什麼是一個動畫塊? block:表示動作的對象;下面 是使用塊的對象塊1,塊2(CODE PARTC)

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

這意味着它將做在塊1定義的動作,動畫的一個例子就好像它們是內部開始提交動畫句子,以及(在美麗的部分)完成後,他們會做block2的行動! :d!

但是什麼是塊塊?嗯... THIS IS A F ---- NG BLOCK !:

塊返回void(CODE A部分):

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

座返回BOOL(完成後:你需要一個布爾值),並有內另一個動畫(CODE B部分)

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 的假旋轉反正如果u didnt去t將其,順序是A部分,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,偉大RAYWENDERLICH的下面有一個有用的教程: http://www.raywenderlich.com/2454/how-to-use-uiview-animation-tutorial

希望它有幫助!