用状态机来设计cell动画

作者:神秘网友 发布时间:2020-09-06 19:05:06

用状态机来设计cell动画

用状态机来设计cell动画

用状态机来设计cell动画

用状态机来设计cell动画

 

前言

一个cell可能有好几种状态,比方说选中状态与未选中状态,以及失效状态等等状态,我们将这些不同的情形抽象成一个个状态机,用状态机切换逻辑来设计复杂的动画效果,达到简化设计的目的,大大增加程序可维护性.

* 大家需要注意一点,cell因为是可以复用的控件,因为存在复用,所以里面存在较为恶心的复用逻辑,设计动画接口时是需要注意这些小细节的.(亲手写过的人一定会深有体会)

 

效果

用状态机来设计cell动画

 

源码

https://github.com/YouXianMing/CellStateAnimation


//
//  CellStateAnimationProtocol.h
//  CellState
//
//  Created by YouXianMing on 15/9/2.
//  Copyright (c) 2015年 ZiPeiYi. All rights reserved.
//

#import <Foundation/Foundation.h>

/**
 cell状态
 */
typedef enum : NSUInteger {

    SelectedCellState = 0x20, // 选中状态
    UnselectedCellState,      // 未选中状态
    
} ECellState;

@protocol CellStateAnimationProtocol <NSObject>

@required
/**
 *  切换到指定的状态
 *
 *  @param state    指定的状态
 *  @param animated 是否需要执行切换的动画
 */
- (void)changeToState:(ECellState)state animated:(BOOL)animated;

@end

分析

使用协议是为了统一接口,统一cell的行为.因为,每个末端的cell都是不可复用的,写出高复用的代码并没有太大价值.

用状态机来设计cell动画

用model记录状态值

用状态机来设计cell动画

如何设置动画

用状态机来设计cell动画


用状态机来设计cell动画相关教程

  1. 设计模式之命令模式
  2. HBase Rowkey 设计指南
  3. Java面向对象设计模式(十七)——责任链模式(Chain of Respons
  4. 设计模式之策略模式
  5. 谈谈API接口安全性设计思路
  6. 设计模式之适配器模式
  7. 重写UITableViewCell子类中属性的setter方法来实现隐藏或显示该c
  8. EntityFramework 元数据 设计分析