#import"ViewController.h"
#import"CZAppInfo.h"
#import"CZAppInfoView.h"
@interfaceViewController()
//存储从plist中获取的数据
@property(nonatomic,strong)NSArray*appInfos;
@end
@implementationViewController
//1懒加载
- (NSArray*)appInfos
{
if(_appInfos==nil) {
//调用appInfo的类方法,返回模型数组
_appInfos= [CZAppInfoappInfosList];
}
return_appInfos;
}
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLog(@"%@",NSHomeDirectory());
//2测试数据
//NSLog(@"%@",self.appInfos);
inttotalColumn =3;
CGFloatsubViewW =100;
CGFloatsubViewH =100;
//子view的横向间距=(父view的宽度- 3 *子view的宽度) / 4
CGFloatmarginX = (self.view.frame.size.width- totalColumn * subViewW) / (totalColumn +1);
//子view的纵向间距=20
CGFloatmarginY =20;
//3动态生成9宫格的方块
for(inti =0; i
//动态生成view
//UIView *subView = [[UIView alloc] init];
//[self.view addSubview:subView];
////从xib中加载subview
//NSBundle *bundle = [NSBundle mainBundle];
////加载xib中得view
//CZAppInfoView *subView = [[bundle loadNibNamed:@"CZAppInfoView" owner:nil options:nil] lastObject];
//封装自定义view
CZAppInfoView*subView = [CZAppInfoViewappInfoView];
[self.viewaddSubview:subView];
//计算frame
//当前子view的行号=当前遍历到得索引值/总列数
introw = i / totalColumn;
//当前子view的列号=当前遍历到得索引值%总列数
intcolumn = i % totalColumn;
//
//子view横坐标的公式=子view的横向间距+列号* (子view的横向间距+子view的宽度)
CGFloatsubViewX = marginX + column * (marginX + subViewW);
//子view纵坐标的公式= 20 +行号* (子view的纵向间距+子view的高度)
CGFloatsubViewY =30+ row * (marginY + subViewH);
subView.frame=CGRectMake(subViewX, subViewY, subViewW, subViewH);
//取得当前遍历到得数据
CZAppInfo*appInfo =self.appInfos[i];
subView.appInfo= appInfo;
//给subview的子控件赋值
////方式1
//UIImageView *iconView = subView.subviews[0];
//iconView.image = [UIImage imageNamed:appInfo.icon];
////方式2
//UILabel *nameView =(UILabel *)[subView viewWithTag:10];
//nameView.text = appInfo.name;
//subView.nameView.text = appInfo.name;
//subView.iconView.image = [UIImage imageNamed:appInfo.icon];
}
}
@end
=====================================
2、找公式
子view的横向间距= (父view的宽度- 3 *子view的宽度) / 4子view的纵向间距= 20
当前子view的行号=当前遍历到得索引值/总列数
当前子view的列号=当前遍历到得索引值%总列数
当前子view的列号=当前遍历到得索引值%总列数
子view横坐标的公式=子view的横向间距+列号* (子view的横向间距+子view的宽度)
子view纵坐标的公式= 50 +行号* (子view的纵向间距+子view的高度)2、计算9宫格位置,循环添加