1.使用代码建立控件程序员
========================================数组
在OC开发中,Storyboard中的全部操做均可以经过代码实现,程序员必定要熟练掌握代码布局界面的能力!ide
使用代码建立控件的步骤以下:布局
1> 使用控件对应类建立对象动画
2> 设置对象属性:frame\color\text\image\backgroundImage……atom
3> [self.view addSubview:btn];将控件添加到视图spa
设置控件监听方法的示例代码以下:code
[btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];orm
提示:对象
1> addTarget方法定义在UIControl类中,这意味着能够给全部继承自UIControl类的对象添加监听方法
2> 监听方法的第一个参数就是对象自己
3> 监听方法的第二个参数是监听控件的事件
2. viewDidLoad
========================================
viewDidLoad是视图加载完成后调用的方法,一般在此方法中执行视图控制器的初始化工做
在viewDidLoad方法中,必定不要忘记调用父类的方法实现!
[super viewDidLoad];
3.手码懒加载建立控件的步骤
========================================
1> 定义控件属性,注意:属性必须是strong的,示例代码以下:
@property (nonatomic, strong) UIImageView *icon;
2> 在属性的getter方法中实现懒加载,示例代码以下:
- (UIImageView *)icon
{
if (!_icon) {
// 计算位置参数
CGFloat imageW = 200;
CGFloat imageX = (320 - imageW) / 2;
CGFloat imageH = 200;
CGFloat imageY = 80;
// 实例化图像视图
_icon = [[UIImageView alloc] initWithFrame:CGRectMake(imageX, imageY, imageW, imageH)];
// 将图像视图添加到主视图
[self.view addSubview:_icon];
}
return _icon;
}
使用懒加载的好处:
1> 没必要将建立对象的代码所有写在viewDidLoad方法中,代码的可读性更强
2> 每一个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合
3. 使用Plist文件
========================================
使用Plist文件的目的:将数据与代码分离
加载方法:
NSString *path = [[NSBundle mainBundle] pathForResource:@"ImageData" ofType:@"plist"];
_imageList = [NSArray arrayWithContentsOfFile:path];
提示:一般在方法中出现File字眼,一般须要传递文件的全路径做为参数
====================================================================================
1. Images.xcassets中的素材
========================================
1> 只支持png格式的图片
2> 图片只支持[UIImage imageNamed]的方式实例化,可是不能从Bundle中加载
3> 在编译时,Images.xcassets中的全部文件会被打包为Assets.car的文件
2. UIImageView的序列帧动画
========================================
// 0. 是否正在动画
[self.tom isAnimating];
// 1. 设置图片的数组
[self.tom setAnimationImages:arrayM];
// 2. 设置动画时长,默认每秒播放30张图片
[self.tom setAnimationDuration:arrayM.count * 0.075];
// 3. 设置动画重复次数,默认为0,无限循环
[self.tom setAnimationRepeatCount:1];
// 4. 开始动画
[self.tom startAnimating];
// 5. 动画播放完成后,清空动画数组
[self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration];
3. UIImage imageNamed
========================================
在图片使用完成后,不会直接被释放掉,具体释放时间由系统决定,适用于图片小,经常使用的图像处理
若是要释放快速释放图片,可使用[UIImage imageWithContentsOfFile:path]实例化图像
4.方法重构的策略
========================================
1> 将具备共性的代码复制到一个新的方法
2> 根据不一样的调用状况,增长方法的参数
提示:在写程序时不要着急重构,有时候把代码先写出来,更容易看清楚如何重构才会更好!
5. Bundle中的图片素材
========================================
往项目中拖拽素材时,一般选择
1> Destination: 勾选
2> Folders:
选择第一项:黄色文件夹
Xcode中分文件夹,Bundle中全部所在都在同一个文件夹下,所以,不能出现文件重名的状况
特色:
*** 能够直接使用[NSBundle mainBundle]做为资源路径,效率高!
*** 可使用[UIImage imageNamed:]加载图像
选择第二项:蓝色文件夹
Xcode中分文件夹,Bundle中一样分文件夹,所以,能够出现文件重名的状况
特色:
*** 须要在[NSBundle mainBundle]的基础上拼接实际的路径,效率较差!
*** 不能使用[UIImage imageNamed:]加载图像
6.文件管理
========================================
[NSFileManager defaultManager]
经常使用方法
1> 判断文件是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
2> 将文件从源路径复制到目标路径
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
3> 删除文件
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
4> 返回指定路径中的文件列表
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error ;