掌握
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;
应用程序启动图片
一个app在启动过程中会全屏显示叫做Default.png的图片
不同规格Default的使用场合
Default.png:非retina-iPhone屏幕,320x480
[email protected]:retina-iPhone屏幕,640x960
[email protected]:4inch的retina-iPhone屏幕,640x1136
Default-Portrait~ipad.png:非retain-iPad竖屏屏幕,768x1024
[email protected]:retain-iPad竖屏屏幕,1536x2048
Default-Landscape~ipad.png:非retain-iPad横屏屏幕,1024x768
[email protected]: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;
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文件”
解析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;
}