基础 (八) : 帧动画/plist

掌握

UIImageView帧动画的使用

UIImage的2种加载方式

重复代码的封装抽取

文档注释的写法

UIImageView帧动画相关属性和方法

@property(nonatomic,copy) NSArray *animationImages;

需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片)

@property(nonatomic) NSTimeInterval animationDuration;

帧动画的持续时间

@property(nonatomic) NSInteger animationRepeatCount;

帧动画的执行次数(默认是无限循环)

  • (void)startAnimating;

开始执行帧动画

-(void)stopAnimating;

停止执行帧动画

-(BOOL)isAnimating;

是否正在执行帧动画

UIImage的2种加载方式

方式一:有缓存(图片所占用的内存会一直停留在程序中)

+(UIImage *)imageNamed:(NSString *)name;

name是图片的文件名

方式二:无缓存(图片所占用的内存会在一些特定操作后被清除)

+(UIImage *)imageWithContentsOfFile:(NSString *)path

-(id)initWithContentsOfFile:(NSString *)path;

path是图片的全路径

重复代码的封装抽取

当一份代码重复出现在程序的多处地方,就会造成程序又臭又长,当这份代码的结构要修改时,每一处出现这份代码的地方都得修改,导致程序的扩展性很差
因此,要将重复出现的代码抽取到某个方法中,在需要这份代码的地方调用方法即可
抽取代码的思路

将相同的代码放到一个方法中

将不同的值当做方法参数传进来

掌握

按钮的多功能使用

@2x的含义

应用程序图标、启动图片的添加

状态栏

在iOS7中,状态栏默认情况下归控制器管理,比如状态栏的样式、状态栏的是否可见

控制器通过重写以下方法来控制状态栏

设置状态栏的样式

(UIStatusBarStyle)preferredStatusBarStyle;

其中UIStatusBarStyleLightContent是白色样式

设置状态栏的可见性

  • (BOOL)prefersStatusBarHidden;
未命名图片1.png

未命名图片.png

应用程序启动图片

一个app在启动过程中会全屏显示叫做Default.png的图片

不同规格Default的使用场合

Default.png:非retina-iPhone屏幕,320x480

Default@2x.png:retina-iPhone屏幕,640x960

Default-568h@2x.png:4inch的retina-iPhone屏幕,640x1136

Default-Portrait~ipad.png:非retain-iPad竖屏屏幕,768x1024

Default-Portrait~ipad@2x.png:retain-iPad竖屏屏幕,1536x2048

Default-Landscape~ipad.png:非retain-iPad横屏屏幕,1024x768

Default-Landscape~ipad@2x.png:retain-iPad横屏屏幕,2048x1536

UIButton

UIButton有很多种状态,它提供了一些便捷属性,可以直接获取当前状态下的文字、文字颜色、图片等

@property(nonatomic,readonly,retain) NSString *currentTitle;

@property(nonatomic,readonly,retain)UIColor *currentTitleColor;

@property(nonatomic,readonly,retain)UIImage *currentImage;

@property(nonatomic,readonly,retain) UIImage
*currentBackgroundImage;

未命名图片2.png

UIButton和UIImageView

相同点

都能显示图片

不同点

UIButton默认情况就能监听点击事件,而UIImageView默认情况下不能

UIButton可以在不同状态下显示不同的图片

UIButton既能显示文字,又能显示图片

如何选择

UIButton:需要显示图片,点击图片后需要做一些特定的操作
UIImageView:仅仅需要显示图片,点击图片后不需要做任何事情
UIImage:父类为NSObject,不是一个控件,只是一个图片

NSArray和NSDictionary的使用

当图片内容非常多时,“根据index来设置内容”的代码就不具备扩展性,要经常改动

为了改变现状,可以考虑将图片数据线保存到一个数组中,数组中有序地放着很多字典,一个字典代表一张图片数据,包含了图片名、图片描述

@property (strong, nonatomic) NSArray *images;

由于只需要初始化一次图片数据,因此放在get方法中初始化

将属性放在get方法中初始化的方式,称为“懒加载”\”延迟加载”

什么是Plist文件

直接将数据直接写在代码里面,不是一种合理的做法。如果数据经常改,就要经常翻开对应的代码进行修改,造成代码扩展性低

因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最新的数据。如果要变动数据,直接修改数据文件即可,不用修改代码

一般可以使用属性列表文件存储NSArray或者NSDictionary之类的数据,这种属性列表文件的扩展名是plist,因此也成为“Plist文件”

未命名图片4.png

解析Plist文件

接下来通过代码来解析Plist文件中的数据

获得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;

}

未命名图片5.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,875评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,569评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,475评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,459评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,537评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,563评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,580评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,326评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,773评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,086评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,252评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,921评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,566评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,190评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,435评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,129评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,125评论 2 352

推荐阅读更多精彩内容