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

需求:

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
时间: 2024-10-11 13:34:44

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

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

A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不可以再按 2.在屏幕中间弹出一个消息框,通知消息“xx已经被安装”,慢慢消失 3.消息框样式为圆角半透明 B.不使用代理模式,使用app空间组和主View之间的父子View关系 1.在主View中创建一个消息框 主View控制器:ViewController.m 1 // 创建下载成功消息框 2 CGFloat labelWid

0821基本控件实例1 ——图片浏览器

一.项目需求--照片浏览器 二.开发步骤 1. 新建项目 2. 搭建UI界面 3. 建立IBOutlet,以便代码能够处理界面元素 4. 建立IBAction,以便界面上某些事件发生时执行方法 5. 代码实现 提示:为了便于理解,开发过程分两个步骤完成 三.演练说明 1.本节使用到的控件包括:UILabel,UIImageView,UISwitch,UIStepper和UISlider五个基本控件,除了第一个UILabel大家已经接触过之外,其他的四个控件都是第一次接触 2.开发过程中首先通过两

iOS基础控件UINavigationController中的传值

iOS基础控件UINavigationController中的传值,代理传值,正向传值,反向传值 #import <UIKit/UIKit.h> //声明一个协议 @protocol SendValue<NSObject> //定义一个方法 - (void)sendBtnTitle:(NSString *)title; @end @interface FirstViewController : UIViewController // 定义代理 @property (nonatomi

ios基础控件之开关按钮(UISwitch)

UISwitch控件是iOS开发的基础控件,是非常简单的一个控件,因为它的方法比较少.UISwitch继承于UIControl基类,因此可以当成活动控件使用. 注意:开关状态通过它的on属性进行读取,该属性是一个BOOL属性 创建: UISwitch* mySwitch = [[ UISwitch alloc]initWithFrame:CGRectMake(0.150.0f,100.0f,0.0f,0.0f)]; 可能你会疑问为什么它的大小都设置为0?没错,它的大小你设置是无效的,系统会为你分

iOS基础控件之 图片浏览器

知识准备: UIbutton 和UIimageview的异同: 相同点:> 都能显示图片 不同点:> UIButton默认情况就能监听点击事件,而UIImageView默认情况下不能   > UIButton可以在不同状态下显示不同的图片      > UIButton既能显示文字,又能显示图片 如何选择:> UIButton:需要显示图片,点击图片后需要做一些特定的操作 > UIImageView:仅仅需要显示图片,点击图片后不需要做任何事情 NSArray和NSDi

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

原图: 900 x 1305   拖曳滚动: 缩放:       主要代码: 1 // 2 // ViewController.m 3 // ImageZoom 4 // 5 // Created by hellovoidworld on 14/11/28. 6 // Copyright (c) 2014年 hellovoidworld. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface

iOS 基础控件(下)

上篇介绍了UIButton.UILabel.UIImageView和UITextField,这篇就简短一点介绍UIScrollView和UIAlertView. UIScrollView 顾名思义也知道这个是和滚动相关的控件,在Android开发时遇到过ScrollView,当内容的尺寸超出了屏幕范围之后,用ScrollView则可以通过滚动的方式使得超出屏幕的那部分内容通过滚动的方式显示出来,在Android里面有水平的ScrollView和垂直的ScrollView,在iOS里面就只有一个S

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

A.需求 做出一个类似于QQ.微信的聊天界面 1.每个cell包含发送时间.发送人(头像).发送信息 2.使用对方头像放在左边,我方头像在右边 3.对方信息使用白色背景对话框,我方信息使用蓝色背景对话框 4.隐藏相同的发送时间 5.底部功能按钮:语音按钮.消息输入框.表情按钮.附加按钮 6.响应键盘事件,呼出键盘.隐藏键盘时对上述的视图作出上移操作 7.键盘的发送事件处理 B.实现点 1.底层视图搭建 上部分聊天信息框:UITableView 下部分功能区:UIButton 信息输入框使用无边框

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

A.需求 1.自定义一个UIView和xib,包含国家名和国旗显示 2.学习row的重用 B.实现步骤 1.准备plist文件和国旗图片 2.创建模型 1 // 2 // Flag.h 3 // CountriesSelection 4 // 5 // Created by hellovoidworld on 14/12/16. 6 // Copyright (c) 2014年 hellovoidworld. All rights reserved. 7 // 8 9 #import <Foun