提问人:gabac 提问时间:3/16/2010 最后编辑:Gurugabac 更新时间:4/18/2013 访问量:21133
viewForHeaderInSection 的框架大小始终相同
Frame of viewForHeaderInSection is always the same size
问:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if(section != 0) {
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
view.backgroundColor = [UIColor redColor];
return view;
} else {
return tableView.tableHeaderView;
}
}
这是我对 viewForHeaderInSection 的实现,但无论我制作什么框架,它总是向我显示相同的红色框架。你发现我的代码有什么问题吗?
图像:
更新:
嗯,现在我的红色块更高了,但我的第一个 tableHeader 现在以某种方式隐藏了。第一个是使用 titleForHeaderInSection 实现的。我以为我只是实现了tableHeader高度的高度,但这不起作用
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
return 30;
else
return tableView.tableHeaderView.frame.size.height;
}
答:
43赞
Alex Wayne
3/16/2010
#1
您需要实现此委托方法
- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;
就您而言,您可以简单地.return 30;
另外,你正在泄露视图
!
您发生在 .但是一旦发生这种情况,方法执行就会中止,并且永远不会调用 ur。[view release]
return
return
release
所以你想要这个
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
并摆脱下面的明确内容。release
评论
0赞
gabac
3/16/2010
谢谢,你知道他们为什么不拿 rame 高度吗?不明白为什么我必须在额外的委托方法中设置高度......
0赞
Alex Wayne
3/16/2010
我不知道苹果为什么这样做。这有点傻。但我认为他们希望标题框架始终跨越表视图的整个宽度。因此,唯一需要处理的尺寸变量是高度。
0赞
gabac
3/16/2010
谢谢关于自动释放的提示。但是现在我又遇到了一个问题,也许你可以再帮我一次?
0赞
Alex Wayne
3/16/2010
这是一个不同的问题,有点不清楚。发布一个新问题,其中只有相关代码和显示问题的新图像。
0赞
gabac
3/16/2010
非常感谢。做到了:stackoverflow.com/questions/2450957/......
上一个:分析 NSURL 查询属性
评论