2010-04-04 110 views
0

我是一個新手,我需要一些幫助。如何使用此動畫代碼?

我想在給定的UIView上顯示一個彈出圖像,但是我希望它的行爲像UIAlertView或者像Facebook Connect for iPhone模式彈出窗口一樣,因爲它有一個彈性的,橡皮筋狀的動畫到它。

我在網上找到了一些正在嘗試做類似事情的人的代碼。他/她把這些放在一起,但沒有演示或說明。

因爲我是如此的新,我不知道如何將其納入我的代碼。

這是我需要有彈性的形象出現在常規:

- (void) showProductDetail 
{ 
. . . 
    //////////////////////////////////////////////////////////////////////// 
    // THIS IS A STRAIGHT SCALE ANIMATION RIGHT NOW. I WANT TO REPLACE THIS 
    // WITH A BOUNCY RUBBER-BAND ANIMATION 
     _productDetail.transform = CGAffineTransformMakeScale(0.1,0.1); 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:0.5]; 
     _productDetail.transform = CGAffineTransformMakeScale(1,1); 
     [UIView commitAnimations];  
    } 
. . . 
} 

這是我發現的代碼:

float pulsesteps[3] = { 0.2, 1/15., 1/7.5 }; 
- (void) pulse { 
    self.transform = CGAffineTransformMakeScale(0.6, 0.6); 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:pulsesteps[0]]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(pulseGrowAnimationDidStop:finished:context:)]; 
    self.transform = CGAffineTransformMakeScale(1.1, 1.1); 
    [UIView commitAnimations]; 
} 

- (void)pulseGrowAnimationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:pulsesteps[1]]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(pulseShrinkAnimationDidStop:finished:context:)]; 
    self.transform = CGAffineTransformMakeScale(0.9, 0.9); 
    [UIView commitAnimations]; 
} 

- (void)pulseShrinkAnimationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:pulsesteps[2]]; 
    self.transform = CGAffineTransformIdentity; 
    [UIView commitAnimations]; 
} 

在此先感謝您的幫助,您可以給我。

+0

你應該接受Felixyz的答案,如果它解決了你的問題。 – neha 2011-03-02 11:06:25

回答

2

這很簡單。在你的showProductDetail方法中,你啓動一個動畫塊,然後設置_productDetail.transform屬性,然後提交該塊。這就是動畫發生的原因。

您找到的代碼旨在執行此類動畫鏈,但要修改的屬性是self而不是_productDetail。如果_productDetail是您自己創建的類的實例,則可以將該動畫代碼放入該類中。否則,只需將pulse方法中的代碼移動到showProductDetail方法,然後將其他兩個方法放在該方法的下面即可。在所有三種方法中將self.transform替換爲_productDetail.transform