uitableview cell 添加子视图xib为什么frame跟设置的不一样

uitableview cell 添加子视图xib为什么frame跟设置的不一样,第1张

uitableview cell 添加子视图xib为什么frame跟设置的不一样

有时候我们经常需要自定义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即可~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11467539.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存