iOS UITableViewCell的動畫效果(一)

zhf_Zachariah發表於2017-12-13

###第一個動畫

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
///配置 CATransform3D 動畫內容
            CATransform3D  transform;
            transform.m34 = 1.0/-800;
            //定義 Cell的初始化狀態
            cell.layer.transform = transform;
            //定義Cell 最終狀態 並且提交動畫
            [UIView beginAnimations:@"transform" context:NULL];
            [UIView setAnimationDuration:1];
            cell.layer.transform = CATransform3DIdentity;
            cell.frame = CGRectMake(0, cell.frame.origin.y, cell.frame.size.width, cell.frame.size.height);
            [UIView commitAnimations];
}
複製程式碼

動畫效果.gif
###第二個動畫

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
            CATransform3D  transform;
            transform = CATransform3DMakeRotation((CGFloat)((90.0 * M_PI) / 180.0), 0.0, 0.7, 0.4);
            transform.m34 = 1.0/-600;
            cell.layer.shadowColor = [[UIColor blackColor] CGColor];
            cell.layer.shadowOffset = CGSizeMake(10, 10);
            cell.alpha = 0;
            cell.layer.transform = transform;
            cell.layer.anchorPoint = CGPointMake(0, 0.5);//錨點
            if(cell.layer.position.x != 0){
                cell.layer.position = CGPointMake(0, cell.layer.position.y);
            }
            [UIView beginAnimations:@"transform" context:NULL];
            [UIView setAnimationDuration:0.8];
            cell.layer.transform = CATransform3DIdentity;
            cell.alpha = 1;
            cell.layer.shadowOffset = CGSizeMake(0, 0);
            [UIView commitAnimations];
}
複製程式碼

動畫效果2.gif

相關文章