YongSir

专业程序员伪装者

tips

tips

地图效果实现,demo验证

使用scrollView,在缩放过程中,通过仿射参数(a或者d)和最大zoom值的比例,来确定percent,从而设置Interaction的进度,实现双手捏合等放地图交互。

项目框架搭建

准备阶段:

  • 主业务逻辑清楚(8成)
  • 数据组织形式(待定)
  • 数据流向

请求部分: 从业务部分,通过统一接口发送请求

响应部分: 从网络获取到原始数据(JSON),由Manager实例保管,Manager实现reformManagerData协议,直接得到最合适的view需要的具体化model,实现数据展示

  • 工具类组合:包含分类和独立协议 + 常用单利
  • 第三方框架,交由pod统一管理

尽量避免的蛋疼的JSON解析,原数据:

http://host/index.php?c=recommend_ctrl&m=get_tag_level_page_data
关系树

首先是数据的层级关系,存储字段为tag_level,只存储层级关系

  • 其中root_tag的为第一层级所有的id
  • 余下以第一层id为key,存储下一层级的科目id

关系树
具体的所有数据都在tag_meta中,共93组,每组由id为key,对应一个字典

所以需要
第一,将tag_meta所有数据加载到内存,以便于根据id去获取,并且生命周期要保持至少2个层级控制器,所以需要一个从网络获取的原始数据字典
第二,对于每一个控制器itemList中,直接可用的是每层的title

UIButton

  • 在system下,设置background无效,而要更换为custom
    另外系统并未提供setBackground:forState方法,所以自己添加一个分类实现之:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#import "UIButton+UIButtonColor.h"

@implementation UIButton (FillColor)

- (void)setBackgroundColor:(UIColor *)backgroundColor forState:(UIControlState)state {
[self setBackgroundImage:[UIButton imageWithColor:backgroundColor] forState:state];
}

+ (UIImage *)imageWithColor:(UIColor *)color {
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return image;
}

@end
  • UIButton的边框和倒角,对layer操作是最方便的