TableView使用CATransform3D特效动画

 

效果一:

 

在代理方法中实现:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    CATransform3D transform = CATransform3DIdentity;
    // CA_EXTERN CATransform3D CATransform3DTranslate (CATransform3D t, CGFloat tx, CGFloat ty, CGFloat tz)  tx: 左右移动 ty: 上下移动

    transform = CATransform3DTranslate(transform, 0, 50, 0);
    cell.layer.transform = transform;
    [UIView animateWithDuration:0.5 animations:^{
        cell.layer.transform = CATransform3DIdentity;
    }];
}

效果二:

代码:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    CATransform3D transform = CATransform3DIdentity;
    // CA_EXTERN CATransform3D CATransform3DTranslate (CATransform3D t, CGFloat tx, CGFloat ty, CGFloat tz)  tx: 左右移动 ty: 上下移动

    transform = CATransform3DTranslate(transform, 50, 50, 0);
    cell.layer.transform = transform;
    [UIView animateWithDuration:0.5 animations:^{
        cell.layer.transform = CATransform3DIdentity;
    }];
}

 

效果三:

 

效果四:

 

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    CATransform3D transform = CATransform3DIdentity;
    transform = CATransform3DRotate(transform, M_PI_2, 0, 0, 1);
    transform = CATransform3DTranslate(transform, 0, 50, 0);
    transform = CATransform3DScale(transform, 0.0, 0.0, 0.0); //由小变大
    cell.layer.transform = transform;
    cell.layer.opacity = 0.0;

    [UIView animateWithDuration:0.6 animations:^{
        cell.layer.transform = CATransform3DIdentity;
        cell.layer.opacity = 1;
    }];
}

 

效果五:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    CATransform3D transform = CATransform3DIdentity;
    // CA_EXTERN CATransform3D CATransform3DRotate (CATransform3D t, CGFloat angle, CGFloat x, CGFloat y, CGFloat z)
    transform = CATransform3DRotate(transform, M_PI_2, 0, 0, 1);//渐变
    // CA_EXTERN CATransform3D CATransform3DTranslate (CATransform3D t, CGFloat tx, CGFloat ty, CGFloat tz)  tx: 左右移动 ty: 上下移动
    transform = CATransform3DTranslate(transform, 200, 50, 0);//左边水平移动

    transform = CATransform3DScale(transform, -0.5, 0.5, 1); // sx sy 的任意一个为负

    cell.layer.transform = transform;
    cell.layer.opacity = 0.0;

    [UIView animateWithDuration:0.6 animations:^{
        cell.layer.transform = CATransform3DIdentity;
        cell.layer.opacity = 1;
    }];
}

 

效果六:

 

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    CATransform3D transform = CATransform3DIdentity;
    // CA_EXTERN CATransform3D CATransform3DRotate (CATransform3D t, CGFloat angle, CGFloat x, CGFloat y, CGFloat z)
    transform = CATransform3DRotate(transform, M_PI_2, 0.5, 0.0, 0);// 变化的角度
     // CA_EXTERN CATransform3D CATransform3DTranslate (CATransform3D t, CGFloat tx, CGFloat ty, CGFloat tz)  tx: 左右移动 ty: 上下移动
    transform = CATransform3DTranslate(transform, 0, 50, 0);

//  transform = CATransform3DScale(transform, 0.5, 0.0, 1); // sx sy 的任意一个为负
    transform = CATransform3DScale(transform, 0.5, 0.0, 1); // sx sy 的任意一个为负
    cell.layer.transform = transform;

    [UIView animateWithDuration:0.6 animations:^{
        cell.layer.transform = CATransform3DIdentity;
    }];
}

 

效果七:

 

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    CATransform3D transform = CATransform3DIdentity;
    // CA_EXTERN CATransform3D CATransform3DRotate (CATransform3D t, CGFloat angle, CGFloat x, CGFloat y, CGFloat z)
    transform = CATransform3DRotate(transform, M_PI_2, 0.5, 0.0, 0);// 变化的角度

    // CA_EXTERN CATransform3D CATransform3DTranslate (CATransform3D t, CGFloat tx, CGFloat ty, CGFloat tz)  tx: 左右移动 ty: 上下移动
    transform = CATransform3DTranslate(transform, 0, 50, 0);
    transform = CATransform3DScale(transform, 0.0, 0.5, 1); // sx sy 的任意一个为负

    cell.layer.transform = transform;
    [UIView animateWithDuration:0.6 animations:^{
        cell.layer.transform = CATransform3DIdentity;
    }];
}

 

效果八:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    CATransform3D transform = CATransform3DIdentity;
    transform = CATransform3DRotate(transform, M_PI_2, 0.0, 0.5, 0);// 变化的角度  x = 0.5  y = 0.5
    transform = CATransform3DTranslate(transform, 0, 50, 0);
    transform = CATransform3DScale(transform, 0.5, 0.5, 1);

    cell.layer.transform = transform;
    [UIView animateWithDuration:0.6 animations:^{
        cell.layer.transform = CATransform3DIdentity;
    }];
}

 

效果九:

代码: 上面代码改变 Rotate
  • transform = CATransform3DRotate(transform, M_PI_2, 0.5, 0.0, 0);// 变化的角度  x = 0.5  y = 0.5

效果十: 
 
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    CATransform3D transform = CATransform3DIdentity;
    transform = CATransform3DRotate(transform, M_PI_2, 0.0, 0.0, 1);// 变化的角度  x = 0.5  y = 0.5
    transform = CATransform3DTranslate(transform, -200, 50, 0);
    transform = CATransform3DScale(transform, 0.5, 0.0, 1);

    cell.layer.transform = transform;
    [UIView animateWithDuration:0.6 animations:^{
        cell.layer.transform = CATransform3DIdentity;
    }];
}

 

转载于:https://www.cnblogs.com/10-19-92/p/5714425.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值