IOS动画使用

客户端开发过程中,经常用的的就是View之间的切换,移动,放缩,旋转等操作。如果直接从一个状态转换到另一状态,用户看到的效果会感觉很僵硬,这样对用户体验不是太好。

Andorid、IOS客户端开发都有动画这一说,动画就是添加一个过渡效果,使用户看到的View之间转换过程中有一个比较炫的过渡,增加用户体验。下面简单来说一下IOS开发中动画的实现;

IOS动画效果有三种方式可以实现:

1.通过 commitAnimations 方式使用UIView动画

/**
	<#Description#> commitAnimations 方式使用UIView动画
 */
- (void)changeView1
{
    [UIView beginAnimations:@"animation" context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];
    [UIView setAnimationDuration:2.0];
    [UIView commitAnimations];
    
//    在commitAnimations消息之前,可以设置动画完成后的回调,设置方法是:
//    [UIView setAnimationDidStopSelector:@selector(animationFinish:)];
}
2.通过  使用 CATranstion实现动画

/**
	<#Description#> 使用CATranstion
 */
- (void)changeView2
{
    CATransition *transition = [CATransition animation];
    transition.duration = 2.0f;
    transition.type = kCATransitionPush;//kCATransitionFade淡化 kCATransitionMoveIn推挤 kCATransitionPush揭开 kCATransitionReveal覆盖
    transition.subtype = kCATransitionFromTop;//kCATransitionFromRight kCATransitionFromLeft kCATransitionFromTop 
    [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
    [self.view.layer addAnimation:transition forKey:@"animation"];
}
3.通过 UIView的   + (void)animateWithDuration :(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion  这类 方法 在 4.0 之后才支持

/**
 <#Description#> 使用UIView的 + (void)animateWithDuration
 :(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion  方法在4.0之后才支持
 */
- (void)changeView3
{
    [UIView animateWithDuration:3 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^(void) {
        moveView.alpha = 0.0;
    } completion:^(BOOL finished) {
        [UIView animateWithDuration:1 delay:1.0 options:UIViewAnimationOptionAutoreverse animations:^(void) {
            [UIView setAnimationDuration:2.5];
            moveView.alpha = 1.0;
        } completion:^(BOOL finished) {
            
        }];
    }];
}

以上就是IOS客户端实现动画的方法,但是动画具体怎样使用,这个需要结合View页面切换(如changeView2中的
[self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
),页面透明度变化(如changeView3中的moveView透明度的变化),还有页面旋转、放缩、移动等场景(这些需要通过 QuartzCore/QuartzCore.h中的转换矩阵实现 。下面简单实现一个通过结合旋转、放缩的例子

- (void)changeView
{
    UIView *secondView = [[UIView alloc] init];
    secondView.frame = CGRectMake(10, 200, 200, 100);
    secondView.backgroundColor = [UIColor redColor];
  
    
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:3.0];
    [self.view addSubview:secondView];
    CGAffineTransform transform = CGAffineTransformIdentity;//CGAffineTransform  可以实现在二维空间上的位置移动,旋转,放缩。
//    transform = CGAffineTransformMakeRotation(0.4);
//    transform = CGAffineTransformMakeScale(2, 2);
    transform = CGAffineTransformRotate(transform, 0.4);
    transform = CGAffineTransformScale(transform, 1.5, 1.5);
    secondView.transform = transform;
    [UIView commitAnimations];
    
}
需要注意的时旋转、放缩代码放的位置。

转载于:https://my.oschina.net/simple2012/blog/155610

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值