【iOS7开发笔记】tableview之Xib文件的使用
1.storyboard 与 xib文件的区别
- storyboard:描述软件界面,重量级,一般用来描述整个软件所有界面
- Xib:描述软件界面,轻量级,一般用来描述局部。减少代码量。
2.使用xib
- 创建一个xib文件

- 读取xib
- 除了图片以外的资源,一般都是用Bundle来读取
- 解析xib
// 3.根据应用个数创建对应的框框(index 0 ~ 11)
for (int index = 0; index<self.apps.count; index++) {
// 3.1.创建view
NSBundle *bundle = [NSBundle mainBundle];
// 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)
NSArray *objs = [bundle loadNibNamed:@"MJAppView" owner:nil options:nil];
UIView *appView = [objs lastObject];
// 3.2.添加view
[self.view addSubview:appView];
// 3.3.设置frame
int row = index / totalColumns;
int col = index % totalColumns;
// 计算x和y
CGFloat appX = marginX + col * (appW + marginX);
CGFloat appY = 30 + row * (appH + marginY);
appView.frame = CGRectMake(appX, appY, appW, appH);
// 3.4.设置数据
MJApp *app = self.apps[index];
// 3.4.1.图片
// UIImageView *iconView = appView.subviews[0];
UIImageView *iconView = (UIImageView *)[appView viewWithTag:10];
iconView.image = [UIImage imageNamed:app.icon];
// 3.4.2.名称
// UILabel *nameLabel = appView.subviews[1];
UILabel *nameLabel = (UILabel *)[appView viewWithTag:20];
nameLabel.text = app.name;
}
•Xib文件可以用来描述某一块局部的UI界面
•Xib文件的加载
Ø方法1
NSArray *objs = [[NSBundle mainBundle] loadNibNamed:@"MJAppView" owner:nil options:nil];
这个方法会创建xib中的所有对象,并且将对象按顺序放到objs数组中
(如果xib如右图所示,那么objs数组中依次会有3个对象:1个UIView、1个UIButton、1个UISwitch)
Ø方法2
bundle参数可以为nil,默认就是main bundle
UINib *nib = [UINib nibWithNibName:@"MJAppView" bundle:[NSBundle mainBundle]];
NSArray *objs = [nib instantiateWithOwner:nil options:nil];
•在开发阶段,面向开发者的是xib文件; 当把应用装到手机上时,xib文件就会转为nib文件

浙公网安备 33010602011771号