有时候我们经常需要自定义tableView的cell,当cell里面的布局较为复杂时往往舍弃纯代码的方式而改用xib的方式进行自定义。当我们用纯代码的方式布局cell时,往往会在cell的initWithStyle: reuseIdentifier: 方法里面用纯代码进行布局,然后在外部VC的cellForRowAtIndexPath方法里面我们会这么写,假定自定义的cell为Cell,继承自UITableViewCell:
static NSString *CellIdentifier = @"Cell"
Cell *cell = (Cell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]
if (!cell) {
cell = [[[Cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]
}
cell.titleLabel.text = [self.dataList objectAtIndex:indexPath.row]
return cell
上述这么写完全没有问题,因为教科书跟各种教程都是这么写的,上述代码对cell进行了重用。但如果我们现在想用xib来布局呢?看到过不少代码是这么写的:
static NSString *CellIdentifier = @"Cell"
Cell *cell = (Cell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]
if (!cell) {
cell = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([Cell class])
owner:self
options:nil] objectAtIndex:0]
//cell = [[[Cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]
}
cell.titleLabel.text = [self.dataList objectAtIndex:indexPath.row]return cell
跳转到xib时,让xib自适应屏幕的大小的方法是:添加约束
这里举一个例子,步骤如下:
1)cocoaPod的podfile文件如下
2)StoryBoard添加子视图View1如下
3)所要加载的xib如下
4)viewcontroller加载XIB到某个视图上,并约束其大小代码如下
如果想自适应屏幕大小,只要在4)代码中相应的把self.View1改成self.view即可~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)