非死book POP動畫簡單使用

jopen 9年前發布 | 82K 次閱讀 iOS開發 移動開發 Facebook POP

簡單實用POP動畫

發現POP比較好的一點是保留了動畫結束后的狀態,通過block回調。使用POPAnimatableProperty 可以快速添加基本動畫,也可以自定義屬性動畫。


彈性動畫

- (void)spring{

    POPSpringAnimation* framePOP = [POPSpringAnimation animationWithPropertyNamed:kPOPViewBackgroundColor];

    framePOP.springSpeed = 10.f;

    framePOP.springBounciness = 4.f;

    framePOP.toValue =  [UIColor greenColor];

    [framePOP setCompletionBlock:^(POPAnimation * anim , BOOL finsih) {

        if (finsih) {

            NSLog(@"view.frame = %@",NSStringFromCGRect(view.frame));

        }

    }];

    [view pop_addAnimation:framePOP forKey:@"go"];

}


減緩動畫

- (void)Decay{

    POPDecayAnimation* decay = [POPDecayAnimation animationWithPropertyNamed:kPOPViewFrame];

//    decay.toValue = [NSValue valueWithCGRect:CGRectMake(200, 400, 100, 100)];

    decay.velocity = [NSValue valueWithCGRect:CGRectMake(200, 300, 100, 100)];

    [view pop_addAnimation:decay forKey:@"go"];

    

}



基本動畫

-(void)basic{

    POPBasicAnimation* basicAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerCornerRadius];

    basicAnimation.toValue = [NSNumber numberWithFloat:CGRectGetHeight(view.frame)/2.];

    basicAnimation.timingFunction =[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

//    basicAnimation.duration = 3.f;

    [basicAnimation setCompletionBlock:^(POPAnimation * ani, BOOL fin) {

        if (fin) {

            NSLog(@"view.frame = %@",NSStringFromCGRect(view.frame));

//            POPBasicAnimation* newBasic = [POPBasicAnimation easeInEaseOutAnimation];

//            newBasic.property = [POPAnimatableProperty propertyWithName:kPOPLayerCornerRadius];

//            newBasic.toValue = [NSNumber numberWithFloat:0];

//            [view.layer pop_addAnimation:newBasic forKey:@"go"];

        }

    }];

    [view.layer pop_addAnimation:basicAnimation forKey:@"frameChange"];

    

    

    


}


組合動畫

-(void)group

{

    view.transform = CGAffineTransformMakeRotation(M_PI_2/3);

    

    

    POPBasicAnimation* spring = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerPositionY];

    spring.beginTime = CACurrentMediaTime();

    spring.duration = .4f;

    spring.fromValue = [NSNumber numberWithFloat:-100.f];

    spring.toValue = [NSNumber numberWithFloat:CGRectGetMinY(view.frame) + 80];

    [spring setCompletionBlock:^(POPAnimation * ani, BOOL fin) {

    }];

    

    

    POPBasicAnimation* basic = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerRotation];

    basic.beginTime = CACurrentMediaTime();

    basic.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    basic.toValue = [NSNumber numberWithFloat:-M_PI_4];

    basic.duration = .4f;

    

    

    POPBasicAnimation* rotation = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerRotation];

    rotation.beginTime = CACurrentMediaTime() + .4f;

    rotation.toValue = [NSNumber numberWithFloat:0.f];

    rotation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    rotation.duration = .25f;

    

    

    POPBasicAnimation* donw = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerPositionY];

    donw.beginTime = CACurrentMediaTime() + 0.4f;

    donw.toValue = [NSNumber numberWithFloat:CGRectGetMinY(view.frame)];

    donw.duration = .25f;

    donw.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    

    

    

    [view.layer pop_addAnimation:spring forKey:@"spring"];

    [view.layer pop_addAnimation:basic forKey:@"basic"];

    [view.layer pop_addAnimation:donw forKey:@"down"];

    [view.layer pop_addAnimation:rotation forKey:@"rotation"];

}



來自:http://blog.csdn.net/growinggiant/article/details/42742465

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!