首页 > 学院 > 开发设计 > 正文

06-图片浏览器

2019-11-14 19:28:37
字体:
来源:转载
供稿:网友

图片浏览器

小案例简介

  • 接下来使用UIImageView、UILabel、UIButton实现一个综合小案例
  • 功能分析

  1. 点击箭头切换序号、图片、描述

  2. 如果是首张图片,左边箭头不能点击

  3. 如果是尾张图片,右边箭头不能点击

  • 步骤分析

  1. 搭建UI界面

  2. 监听按钮点击

  3. 切换序号、图片、描述

掌握

  • 更换UIImageView的图片
  • 了解UIImageView的contentMode
  • 更换UILabel的文字 在storyboard中设置UILabel的自动换行和文字居中
  • NSArray和NSDictionary的简单使用
  • Plist文件的创建和读取
  • 属性的懒加载
  • viewDidLoad方法的使用
  • UIButton的多种状态

作业

  • 使用纯代码的方式重写图片浏览器小案例(不要拖控件)

UILabel的基本设置

  • 要想让UILabel自动换行,设置Lines为0即可
  • 让UILabel的文字居中显示

UIButton的状态

  • normal(普通状态)
  1. 默认情况
  2. 对应的枚举常量:UIControlStateNormal
  • highlighted(高亮状态)
  1. 按钮被按下去的时候(手指还未松开)
  2. 对应的枚举常量:UIControlStateHighlighted
  • disabled(失效状态,不可用状态)
  • 如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击
  • 对应的枚举常量:UIControlStateDisabled

UIButton和UIImageView

  • 相同点:都能显示图片
  • 不同点
  1. UIButton默认情况就能监听点击事件,而UIImageView默认情况下不能
  2. UIButton可以在不同状态下显示不同的图片
  3. UIButton既能显示文字,又能显示图片
  • 如何选择
  1. UIButton:需要显示图片,点击图片后需要做一些特定的操作
  2. UIImageView:仅仅需要显示图片,点击图片后不需要做任何事情

NSArray和NSDictionary的使用

  • 当图片内容非常多时,“根据index来设置内容”的代码就不具备扩展性,要经常改动
  • 为了改变现状,可以考虑讲图片数据线保存到一个数组中,数组中有序地放着很多字典,一个字典代表一张图片数据,包含了图片名、图片描述

       @PRoperty (strong, nonatomic) NSArray *images;

  • 由于只需要初始化一次图片数据,因此放在get方法中初始化
  • 将属性放在get方法中初始化的方式,称为“懒加载”/”延迟加载”

什么是Plist文件

  • 直接将数据直接写在代码里面,不是一种合理的做法。如果数据经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低
  • 因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最新的数据。如果要变动数据,直接修改数据文件即可,不用修改代码
  • 一般可以使用属性列表文件存储NSArray或者NSDictionary之类的数据,这种属性列表文件的扩展名是plist,因此也成为“Plist文件”

创建Plist文件

解析Plist文件

  • 接下来通过代码来解析Plist文件中的数据
  1. 获得Plist文件的全路径

    NSBundle *bundle = [NSBundle mainBundle]; NSString *path = [bundle pathForResource:@"imageData" ofType:@"plist"];

  • 加载plist文件 _images = [NSArray arrayWithContentsOfFile:path];

  - (NSArray *)images

  {

    if (_images == nil)

    {

      NSBundle *bundle = [NSBundle mainBundle];

      NSString *path = [bundle pathForResource:@"imageData" ofType:@"plist"];

      _images = [NSArray arrayWithContentsOfFile:path];

    }

    return _images;

  }

 

Plist文件的解析过程


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表