九宫格计算思路
- 利用控件索引index计算出控件所在的行号和列号
- 利用列号计算控件的x值
- 利用行号计算控件的y值
HUD
定时任务
[self performSelector:@selector(hideHUD) withObject:nil afterDelay:1.0];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
self.hud.alpha = 0.0;
});
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self
selector:@selector(hideHUD) userInfo:nil repeats:NO];
Plist文件
- 直接将数据写在代码里面,不是一种合理的做法。如果数据经常修改,就要经常找到对应的源代码进行修改,造成代码扩展性低
- 因此,可以考虑将经常变的数据放在文件中进行存储,程序启动后从文件中读取最新的数据。如果要变动数据,直接修改数据文件即可,不用修改代码
- 一般可以使用属性列表文件存储NSArray或者NSDictionary之类的数据,这种“属性列表文件”的扩展名是plist,因此也称为“plist文件”
-
Bundle 获取文件路径
// 数据
// 加载plist文件
// 凡是参数名为File的,传递的都是全路径
// 一个NSbundle对象对应一个资源包(图片、音频、视频、plist文件等)
// NSbundle的作用:可以用来获得文件的全路径,用来访问与之对应的资源包内的文件
// 项目中添加的资源都会被添加到主资源包中
// [NSBundle mainBundle]关联的就是项目的竹资源包
NSBundle *bundle = [NSBundle mainBundle];
// 利用mainBundle获得plist文件在主资源包中的全路径
NSString *file = [bundle pathForResource:@"shops" ofType:@"plist"];
// NSString *file = [bundle pathForResource:@"shops.plist" ofType:nil]; // 两种写法都可以
self.shops = [NSArray arrayWithContentsOfFile:file];
常见问题
- 项目里面的某个.m文件无法使用
- 检查: Build Phases-> Compile Sources
- 项目里面的某个资源文件(比如plist、音频等)无法使用
- 检查:Build Phases - > Copy Bundle Resources