iphone用Animation實現動畫效果 – iPhone手機開發技術文章 iPhone軟體開發教學課程

1、寫瞭一個小Demo,實現上下移動的效果圖: 

   

   

 

 

主要代碼如下:

[cpp]

– (IBAction)upChange:(id)sender {  

    if (typeView == down) {  

        [self.downBtn setHidden:NO];  

        [self.upBtn setHidden:NO];  

        [UIView animateWithDuration:0.5 animations:^{  

            self.upView.center = CGPointMake(self.upView.center.x, 0);  

             self.downView.center = CGPointMake(self.downView.center.x, (self.upView.frame.size.height+self.downView.frame.size.height)/2);  

        }];  

          

        typeView = middle;  

    }else if(typeView == middle){  

        [self.downBtn setHidden:NO];  

        [self.upBtn setHidden:YES];  

        [UIView animateWithDuration:0.5 animations:^{  

            self.upView.center = CGPointMake(self.upView.center.x, -(self.upView.frame.size.height/2));  

            self.downView.center = CGPointMake(self.downView.center.x, self.downView.frame.size.height/2);  

        }];  

          

        typeView = up;  

    }  

  

}  

  

– (IBAction)downChange:(id)sender {  

    if (typeView == middle) {  

        [self.downBtn setHidden:YES];  

        [self.upBtn setHidden:NO];  

        [UIView animateWithDuration:0.5 animations:^{  

            self.upView.center = CGPointMake(self.upView.center.x, self.upView.frame.size.height/2);  

             self.downView.center = CGPointMake(self.downView.center.x, self.upView.frame.size.height+self.downView.frame.size.height/2);  

        }];  

  

        typeView = down;  

    }else if(typeView == up)  

    {  

        [self.downBtn setHidden:NO];  

        [self.upBtn setHidden:NO];  

        [UIView animateWithDuration:0.5 animations:^{  

            self.upView.center = CGPointMake(self.upView.center.x, 0);  

            self.downView.center = CGPointMake(self.downView.center.x, (self.upView.frame.size.height+self.downView.frame.size.height)/2);  

        }];  

          

        typeView = middle;  

    }  

  

}  

 

– (IBAction)upChange:(id)sender {

    if (typeView == down) {

        [self.downBtn setHidden:NO];

        [self.upBtn setHidden:NO];

        [UIView animateWithDuration:0.5 animations:^{

            self.upView.center = CGPointMake(self.upView.center.x, 0);

             self.downView.center = CGPointMake(self.downView.center.x, (self.upView.frame.size.height+self.downView.frame.size.height)/2);

        }];

        

        typeView = middle;

    }else if(typeView == middle){

        [self.downBtn setHidden:NO];

        [self.upBtn setHidden:YES];

        [UIView animateWithDuration:0.5 animations:^{

            self.upView.center = CGPointMake(self.upView.center.x, -(self.upView.frame.size.height/2));

            self.downView.center = CGPointMake(self.downView.center.x, self.downView.frame.size.height/2);

        }];

        

        typeView = up;

    }

 

}

 

– (IBAction)downChange:(id)sender {

    if (typeView == middle) {

        [self.downBtn setHidden:YES];

        [self.upBtn setHidden:NO];

        [UIView animateWithDuration:0.5 animations:^{

            self.upView.center = CGPointMake(self.upView.center.x, self.upView.frame.size.height/2);

             self.downView.center = CGPointMake(self.downView.center.x, self.upView.frame.size.height+self.downView.frame.size.height/2);

        }];

 

        typeView = down;

    }else if(typeView == up)

    {

        [self.downBtn setHidden:NO];

        [self.upBtn setHidden:NO];

        [UIView animateWithDuration:0.5 animations:^{

            self.upView.center = CGPointMake(self.upView.center.x, 0);

            self.downView.center = CGPointMake(self.downView.center.x, (self.upView.frame.size.height+self.downView.frame.size.height)/2);

        }];

        

        typeView = middle;

    }

 

}

 

 

 

這是主要的代碼,另外還有一些需要註意的一些小細,如你的兩個view的大小,需要計算出精確位置。

 

 

下面開始學習[UIView animateWithDuration]方法的使用:

函數原型:

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0); // delay = 0.0, options = 0, completion = NULL

 

duration:動畫持續時間

animations:該代碼兒塊中是所有view要完成的動畫的所有屬性的定義;

還有另外兩個函數:

+ (void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0);

 

 

 

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion__OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_0);// delay = 0.0, options = 0

 

 

 

options:是動畫執行的選項

completion:是動畫完成以後所要執行的代碼塊兒。

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *