[iOS基础控件 - 3.3] 图片浏览器

需求:
1.显示当前图片序号/总图片数
2.显示图片
3.上一张图片、下一张图片转换
4.显示图片描述
 
Image
 
A.数据的加载方式
1.逐个加载、处理
2.使用数组、字典分离数据和逻辑
3.延迟加载
     将初始化放在getter初始化,当需要的数据不存在才初始化
4.使用plist
     存储数据在外部文件,剥离数据和逻辑代码
     不要使用带”info”的名字,会跟系统文件混淆
 
a.使用NSBundle获得手机全路径
    
 1 if (_imageData == nil) {
 2         // 初始化数据
 3         // File: 全路径
 4         // NSBoundle: 一个NSBoundle代表一个文件夹
 5         // 利用mainBundle就可以访问手机里面的任何资源
 6         NSBundle *bundle = [NSBundle mainBundle];
 7        
 8         // 获得imageData.plist的全路径
 9         NSString *path = [bundle pathForResource:@"imageDate" ofType:@"plist"];
10         _imageData = [NSArray arrayWithContentsOfFile:path];
11     }
 
b. plist文件的解析过程
逐层解析、封装
 
 
c.转换图片
 1 #pragma mark 转换图片
 2 - (void) changeData {
 3     // 1.设置当前图片的序号标题
 4     self.noLabel.text = [NSString stringWithFormat:@"%d/%d", self.index + 1, self.imageData.count];
 5     
 6     // 2.取出当前的图片数据
 7     NSDictionary *currentImageData = self.imageData[self.index];
 8     
 9     // 3.设置图片
10     self.iconView.image = [UIImage imageNamed:currentImageData[IconKey]];
11     
12     // 4.设置图片描述
13     self.descLabel.text = currentImageData[DescKey];
14     
15     // 5.改变按钮状态
16     self.previousButton.enabled = (self.index != 0);
17     self.nextButton.enabled = (self.index != self.imageData.count - 1);
18 }
19 
20 #pragma mark 上一张
21 - (IBAction)previous {
22     self.index--;
23     [self changeData];
24 }
25 
26 #pragma mark 下一张
27 - (IBAction)next {
28     self.index++;
29     [self changeData];
30 }
31 @end
 
 
posted @ 2014-11-24 21:53  HelloVoidWorld  阅读(399)  评论(1编辑  收藏  举报