核心动画04-CATransition转场动画

本文介绍了如何使用iOS中的CATransition来实现模拟翻书效果的页面切换动画,包括向前和向后翻页的具体实现方式,并列举了多种过渡效果及方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Transition:过度,执行一些过度动画,比如两个界面切换的时候,push就是一种过度动画

模拟翻书效果:通过按钮模拟左右滑动,index标记当前的图片的下标名

#pragma make 上一张
- (IBAction)previous:(UIButton *)sender {
    
    self.index--;
    if (self.index == -1) {
        self.index = 8;
    }
    
    self.iconView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",self.index + 1]];
    
    //转场动画
    CATransition *anim = [CATransition animation];
//    anim.type = @"cube";  // 动画过渡类型
//    动画的方向,枚举类型,四种方向
//    anim.subtype = kCATransitionFromLeft;  // 动画过渡方向
    
    anim.type = @"pageUnCurl";
    anim.duration = 0.5;  // 动画持续1s
    
    //动画加到哪个layer上面
    [self.iconView.layer addAnimation:anim forKey:nil];
}

#pragma make 下一张
- (IBAction)next:(id)sender {
    
    self.index++;
    if (self.index == 9) {
        self.index = 0;
    }
    
    self.iconView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.jpg",self.index + 1]];
    
    //转场动画
    CATransition *anim = [CATransition animation];
    anim.type = @"pageCurl";
    anim.duration = 0.5;
    
    //从百分之多少开始动画
    anim.startProgress = 0.5;
    
    //从百分之多少结束动画
    anim.endProgress = 0.8;
    
    // 代理,动画执行完毕后会调用delegate的animationDidStop:finished:
//    anim.delegate = self;
    
    [self.iconView.layer addAnimation:anim forKey:nil];
}

过度效果和过度方向例举

/* 过渡效果 
fade     //交叉淡化过渡(不支持过渡方向) kCATransitionFade 
push     //新视图把旧视图推出去 kCATransitionPush  moveIn   //新视图移到旧视图上面 kCATransitionMoveIn 
reveal   //将旧视图移开,显示下面的新视图 kCATransitionReveal 
cube     //立方体翻滚效果 
oglFlip  //上下左右翻转效果 
suckEffect   //收缩效果,如一块布被抽走(不支持过渡方向) 
rippleEffect //滴水效果(不支持过渡方向) 
pageCurl     //向上翻页效果 
pageUnCurl   //向下翻页效果 
cameraIrisHollowOpen  //相机镜头打开效果(不支持过渡方向) 
cameraIrisHollowClose //相机镜头关上效果(不支持过渡方向)
*/   

/* 过渡方向
 kCATransitionFromRight 
kCATransitionFromLeft 
kCATransitionFromBottom 
kCATransitionFromTop
*/

 

转载于:https://www.cnblogs.com/yipingios/p/4505673.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值