1、九宫格算法
任意类似九宫格的算法,用for循环实现,在同一行的Y值相同,在同一列的X值相同,用求余和商来确认是同行还是同列。
for (int i=0; i<(num); i++) {
//同行的Y值相同,X变化
int col = i%colNum;
CGFloat appViewX = (col + 1)*deltaX + col*appViewW;
//同列的X值相同,Y变化
int row = i/colNum;
CGFloat appViewY = startY + row*(appViewH + deltaY);
UIView *appView = [[UIView alloc] initWithFrame:CGRectMake(appViewX, appViewY, appViewW, appViewH)];
// appView.backgroundColor = [UIColor yellowColor];
[self.view addSubview:appView];
}
2、字典转模型
错误提示:CUICatalog: Invalid asset name supplied: (null)
原因是[UIImage imageNamed:nil];
-(NSArray *)appList{
if(_appList == nil){
//applist保存的是字典=>模型
// NSString *p = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil];
NSArray *array = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil]];
// _appList = [NSArray arrayWithContentsOfFile:p];
//创建一个临时数组
NSMutableArray *arrM = [NSMutableArray array];
for (NSDictionary *dict in array) {
AppleInfo *appInfo = [[AppleInfo alloc] init];
appInfo.name = dict[@"name"];
appInfo.icon = dict[@"icon"];
[arrM addObject:appInfo];
}
_appList = arrM;
}
return _appList;
}
3、KVC
/**
使用KVC的注意事项
1.plist中的键值名称必须与模型中的属性一致
2.模型中的属性可以不全部出现在plist中
*/
//KVC - key value coding(键值编码)
//是一种间接修改/读取对象属性的一种方法
//KVC 被成为 cocoa 的大招
//参数:
//1.数值
//2.属性名称
// [self setValue:dict[@"name"] forKey:@"name"];
// [self setValue:dict[@"icon"] forKey:@"icon"];
//setValuesForKeysWithDictionary本质上就是调用以上两句代码
[self setValuesForKeysWithDictionary:dict];
4、动画效果
//*****给按键添加监听方法
[button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
-(void)click:(UIButton *)button{
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(80, 480,160, 40)];
label.backgroundColor = [UIColor redColor];
label.text = [self.appList[button.tag] name];
label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:label];
//初始透明度,完全透明
label.alpha = 0.0;
//******动画效果
[UIView animateWithDuration:1 animations:^{
label.alpha = 1;
} completion:^(BOOL finished) {
[UIView animateWithDuration:1 animations:^{
label.alpha = 0;
} completion:^(BOOL finished) {
[label removeFromSuperview];
}];
}];
}
5、重构
原则:让代码放在最应该存在的地方
方法:
1)设定开发计划,开发步骤
2)每一个步骤告一段落后,需哟啊暂停,审核代码,有针对性的重构
目前要做的,尽量不要出现重复的代码!
6、XIB自定义文件
//*****使用XIB自定义视图,lastObject是数组最后一个
//使用XIB可以有多个控件,一般只使用一个
// AppView *appView = [[[NSBundle mainBundle] loadNibNamed:@"AppView" owner:nil options:nil] lastObject];
// AppView *appView = [AppView appView];
AppView *appView = [AppView appViewWithAppInfo:self.appList[i]];
appView.frame = CGRectMake(appViewX, appViewY, appViewW, appViewH);
[self.view addSubview:appView];
//实现视图内部的细节
// AppleInfo *appInfo = self.appList[i];
appView.appleInfo = self.appList[i];
7、IOS界面调试利器Reveal使用(Xcode集成)说明
视频里不准确,http://www.th7.cn/Program/IOS/201507/496988.shtml
破解:
~/资源库/Caches/
com.ittybittyapps.Reveal文件删除
~/资源库/Preferences/
com.ittybittyapps.Reveal.plist删除
又可以使用30天
Xcode6会有类似的功能
在Xcode中的使用方法:
1、首先安装好Reveal,下载地址:http://download.revealapp.com/Reveal.app.zip
2、在Reveal软件的菜单栏中选择【Help】-【Show Reveal Library In Finder】,会显示Reveal的FrameWork和dylib文件,需要在Xcode项目中引入。
3、在Xcode项目中配置如下几个地方:
1)添加Reveal的Framework文件,将Framework文件拖到项目导航面板中,在弹窗中选择Add to Target和Copy Item if need。(这个操作会把dylib文件复制到您的项目中,如果reveal更新了,那需要重新操作一遍来覆盖旧文件)
2)在项目配置区域,选择Build Phases,在Link Binary With Libraries节点中删除Reveal库。
3) 选择Build Setting,在右上角搜索框中输入关键字:Other Link,会自动帅选出Linking节点中的Other Linker Flags属性节点,输入内容:
-ObjC -lz -framework Reveal
3、Xcode的配置完成,现在选择一个iphone模拟器开始运行您的项目。运行成功后,切换到Reveal程序界面。在左上角No Connection那个下拉框中选择您的项目名称。
4、开始使用吧!Reveal的三维显示真的太棒了:
注意哦:如果您选择真机调试,那么需要确保手机和电脑处于同一个Wifi网络中(同一个网段中)。
我第一次使用时,就碰到这个问题:电脑插的有线连接的是不带无线功能的路由器(电脑网段是192.168.1.1),手机连的wifi是使用便携式wifi设备,网段是192.168.99.1,虽然2个设备都能联网,但是对于Reveal来说,也许这样是无法识别到的,所以,我换了一个带无线的路由器,让手机和电脑的IP保持在一个网段内,就可以了!
tips:
本文由wp2osc导入,原文链接:http://devonios.com/ios-ui-reveal-in-xcode.html
由于OSChina的OpenAPI在处理content参数时会自动过滤img标签,所以无法显示图片,详见。