• UI基础--封装cell滑动时的动画


    新建一个类:CellDisplay:NSObject

    .h
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
    
    @interface CellDisplay : NSObject
    
    +(void)tableView:(UITableView *)tableView cell:(UITableViewCell *)cell IndexPath:(NSIndexPath *)indexPath;
    
    
    @end
    .m
    
    #import "CellDisplay.h"
    
    @implementation CellDisplay
    
    +(void)tableView:(UITableView *)tableView cell:(UITableViewCell *)cell IndexPath:(NSIndexPath *)indexPath
    {
        
        NSArray *array =  tableView.indexPathsForVisibleRows;
        NSIndexPath *firstIndexPath = array[0];
        
        //设置anchorPoint
        cell.layer.anchorPoint = CGPointMake(0, 0.5);
        //为了防止cell视图移动,重新把cell放回原来的位置
        cell.layer.position = CGPointMake(0, cell.layer.position.y);
        
        //设置cell 按照z轴旋转90度,注意是弧度
        if (firstIndexPath.row < indexPath.row) {
            cell.layer.transform = CATransform3DMakeRotation(M_PI_2, 0, 0, 1.0);
        }else{
            cell.layer.transform = CATransform3DMakeRotation(- M_PI_2, 0, 0, 1.0);
        }
        
        cell.alpha = 0.0;
        
        [UIView animateWithDuration:1 animations:^{
            cell.layer.transform = CATransform3DIdentity;
            cell.alpha = 1.0;
        }];
        
        
        //CollectionCell 动画
        /*
         if (indexPath.row % 2 != 0) {
         cell.transform = CGAffineTransformTranslate(cell.transform, kScreenWidth/2, 0);
         }else{
         cell.transform = CGAffineTransformTranslate(cell.transform, -kScreenWidth/2, 0);
         }
         cell.alpha = 0.0;
         [UIView animateWithDuration:0.7 animations:^{
         cell.transform = CGAffineTransformIdentity;
         cell.alpha = 1.0;
         } completion:^(BOOL finished) {
         
         }];
         */
        
    }
    
    @end

    在tableview的协议方法中调用即可:

    - (void)tableView:(UITableView *)tableView willDisplayCell:(nonnull UITableViewCell *)cell forRowAtIndexPath:(nonnull NSIndexPath *)indexPath
    {
        
        [CellDisplay tableView:tableView cell:cell IndexPath:indexPath];
        
    }

    Ok...

  • 相关阅读:
    servlet中调用注入spring管理的dao(转)
    java枚举类(转)
    压缩包太大导致的部署问题
    oracle数据泵导出导入
    全错位排列
    母函数及相关的算法题
    Effective Modern C++翻译(5)-条款4:了解如何观察推导出的类型
    Effective Modern C++翻译(4)-条款3:了解decltype
    Effective Modern C++翻译(3)-条款2:明白auto类型推导
    Effective Modern C++翻译(2)-条款1:明白模板类型推导
  • 原文地址:https://www.cnblogs.com/LzwBlog/p/5858669.html
Copyright © 2020-2023  润新知