標籤:
用狀態機器來設計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都是不可複用的,寫出高複用的代碼並沒有太大價值.
用model選項組值
如何設定動畫
用狀態機器來設計cell動畫