需求:
1.显示当前图片序号/总图片数
2.显示图片
3.上一张图片、下一张图片转换
4.显示图片描述
 
 
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
 
 

[iOS基础控件 - 3.3] 图片浏览器的更多相关文章

  1. [iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)

    A.概述      在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能      1.按钮点击后,显示为“已下载”,并且不 ...

  2. [iOS基础控件 - 5.2] 查看大图、缩放图片代码(UIScrollView制作)

    原图: 900 x 1305      拖曳滚动:   缩放:           主要代码: // // ViewController.m // ImageZoom // // Created by ...

  3. iOS 基础控件(下)

    上篇介绍了UIButton.UILabel.UIImageView和UITextField,这篇就简短一点介绍UIScrollView和UIAlertView. UIScrollView 顾名思义也知 ...

  4. [iOS基础控件 - 7.0] UIWebView

    A.基本使用 1.概念 iOS内置的浏览器控件 Safari浏览器就是通过UIWebView实现的   2.用途:制作简易浏览器 (1)基本请求 创建请求 加载请求 (2)代理监听webView加载, ...

  5. [iOS基础控件 - 6.10.2] PickerView 自定义row内容 国家选择Demo

    A.需求 1.自定义一个UIView和xib,包含国家名和国旗显示 2.学习row的重用   B.实现步骤 1.准备plist文件和国旗图片     2.创建模型 // // Flag.h // Co ...

  6. [iOS基础控件 - 6.9] 聊天界面Demo

    A.需求 做出一个类似于QQ.微信的聊天界面 1.每个cell包含发送时间.发送人(头像).发送信息 2.使用对方头像放在左边,我方头像在右边 3.对方信息使用白色背景对话框,我方信息使用蓝色背景对话 ...

  7. iOS基础 - 控件属性

    一.控件的属性 1.CGRect frame 1> 表示控件的位置和尺寸(以父控件的左上角为坐标原点(0, 0)) 2> 修改这个属性,可以调整控件的位置和尺寸 2.CGPoint cen ...

  8. [iOS基础控件 - 6.11.3] 私人通讯录Demo 控制器的数据传递、存储

    A.需求 1.搭建一个"私人通讯录"Demo 2.模拟登陆界面 账号 密码 记住密码开关 自动登陆开关 登陆按钮 3.退出注销 4.增删改查 5.恢复数据(取消修改)   这个代码 ...

  9. [iOS基础控件 - 6.9.3] QQ好友列表Demo TableView

    A.需求 1.使用plist数据,展示类似QQ好友列表的分组.组内成员显示缩进功能 2.组名使用Header,展示箭头图标.组名.组内人数和上线人数 3.点击组名,伸展.缩回好友组   code so ...

随机推荐

  1. Ubuntu 12.04安装字体

    http://www.2cto.com/os/201210/160645.html 安装方法,终端输入:  $ sudo thunar /usr/share/fonts/truetype  待ture ...

  2. Oracle程序包

    程序包由两部分构成:规范(specification)和主体(body). 创建表 create table PEOPLE ( ID NUMBER primary key not null, NAME ...

  3. 睡眠--TASK_INTERRUPTIBLE and TASK_UNINTERRUPTIBLE

    http://i.cnblogs.com/EditPosts.aspx?opt=1   Two states are associated with sleeping, TASK_INTERRUPTI ...

  4. puppet&mcollective客户端安装

    一.环境: 1.客户端:            fedora 19 2.DnsServer:     192.168.0.160 3.server1.xxx.com(10.8.1.201):运行以下服 ...

  5. [转] android自动化之MonkeyRunner测试环境配置(一)

    Android自动化测试之MonkeyRunner 一.Android自动化测试之环境搭建 1.1  Android-sdk介绍 ¢ SDK(Software development kit)软件开发 ...

  6. Android开发之parseSdkContent failed Could not initialize class android.graphics.Typeface

    在进行android开发过程中,忽然发现经常弹出来parseSdkContent failed 这个错误,然后google了下解决办法 方法1: 删除.android文件 重启eclipse. 该方法 ...

  7. IL指令集(转)

    名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...

  8. poj 2251 Dungeon Master( bfs )

    题目:http://poj.org/problem?id=2251 简单三维 bfs不解释, 1A,     上代码 #include <iostream> #include<cst ...

  9. 函数buf_LRU_free_from_common_LRU_list

    /******************************************************************//** Try to free a clean page fro ...

  10. BZOJ3232: 圈地游戏

    题解: 神题一道... 题解戳这里:http://hi.baidu.com/strongoier/item/0425f0e5814e010265db0095 分数规划可以看这里:http://blog ...