码迷,mamicode.com
首页 > 其他好文 > 详细

用状态机来设计cell动画

时间:2015-09-02 22:08:00      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

用状态机来设计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动画

标签:

原文地址:http://www.cnblogs.com/YouXianMing/p/4779453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!