UITableviewcell动画只有一次 [英] UITableviewcell animation only once

查看:146
本文介绍了UITableviewcell动画只有一次的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的 willDisplayCell 动画代码,我只想动画一次,向上滚动表视图时不再重复。

Here is my willDisplayCell animation code I want to animate only once, don't repeat when scroll up the tableview.

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{

    UIView *cellContentView = [cell contentView];
    CGFloat rotationAngleDegrees = -30;
    CGFloat rotationAngleRadians = rotationAngleDegrees * (M_PI/180);
    CGPoint offsetPositioning = CGPointMake(0, cell.contentView.frame.size.height*4);
    CATransform3D transform = CATransform3DIdentity;
    transform = CATransform3DRotate(transform, rotationAngleRadians, -50.0, 0.0, 1.0);
    transform = CATransform3DTranslate(transform, offsetPositioning.x, offsetPositioning.y, -50.0);
    cellContentView.layer.transform = transform;
    cellContentView.layer.opacity = 0.8;

    [UIView animateWithDuration:0.95 delay:00 usingSpringWithDamping:0.85 initialSpringVelocity:0.8 options:0 animations:^{
        cellContentView.layer.transform = CATransform3DIdentity;
        cellContentView.layer.opacity = 1;
    } completion:^(BOOL finished) {}];

    }


推荐答案

如果如果您希望任何代码只运行一次,则可以使用dipatch_once。这将确保该代码在父对象的生命周期中仅运行一次。如果该代码是从tableview的事件处理程序之外的其他位置运行的,则可以将该代码放入dispatch_async中。

If you want any of your code to run only once, you can use dipatch_once. This will make sure that this code is run only once in life span of parent object. You can put that code inside dispatch_async if that code is being run from somewhere other than tableview's event handlers.

dispatch_async(dispatch_get_main_queue(),^{
    static dispatch_once_t once;
    dispatch_once(&once, ^{
           //Your animation code.
    });
};

这篇关于UITableviewcell动画只有一次的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆