问题:
当我为rowHeight
设置UITableView
时,单元格的高度是否也不会更改?
这是导致我思考它的情况:
我想为底部的每个表格视图单元格设置一个单独的行,更重要的是,我想为它设置从44
到32
的行高。我想要的结果如下:
行高设置正确完成:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.tableView setRowHeight:32.0f];
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
//...
}
// Even use the delegate of UITableView
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 32.0f;
}
然而,当我为单元格添加单独的行时,我遇到了一个问题:我想在单元格的底部设置单独的行,因此我将y
位置设置为cell.frame.size.height - 1.0f
。不幸的是,结果显示如下:
当我选择时,单元格改变如下:
选择前的单元格高度似乎为44
,选中后,它会更改为32
。它们像卡片一样一个接一个地重叠,对吧?怪异!
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
[cell.textLabel setFont:[UIFont fontWithName:@"Futura-Medium" size:15.0f]];
UIView * seperateLine = [[UIView alloc] initWithFrame:CGRectMake(10.0f, cell.frame.size.height - 1.0f, 300.0f, 1.0f)];
NSLog(@">>>>>>>>>>>>>>>> %f", cell.frame.size.height);
[seperateLine setBackgroundColor:[UIColor grayColor]];
[cell.contentView addSubview:seperateLine];
[seperateLine release];
}
//...
}
我尝试检查cell.frame.size.height
,最后是44
。然后,我替换了
UIView * seperateLine = [[UIView alloc] initWithFrame:CGRectMake(10.0f, cell.frame.size.height - 1.0f, 300.0f, 1.0f)];
到
UIView * seperateLine = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 31.0f, 300.0f, 1.0f)];
它作为上面显示的第一张图片。但the cell's height was still 44
,他们(我们完全看不到)商品仍然重叠。我所做的只是在separate line
位置y
处添加了32
,但其总高度为44
。
那么你怎么看待这个? :吗
答案 0 :(得分:3)
<强>问题:强>
根据苹果公司的HIG,默认可点击区域是44,所以默认情况下所有控件都有44个高度。
在
中定义新的UITableViewCell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
默认情况下为44,您在UITableViewCell
的框架中不进行任何更改并将其返回。
<强>解决方案:强>
尝试设置UITableViewCell
的帧大小,即cell.frame = CGRectMake(0.0f, 0.0f, 320.0f, 32.0f)
答案 1 :(得分:2)
请参阅documentation并查找tableView:heightForRowAtIndexPath:
委托方法。使用它可以为每一行设置高度。它可以是固定的,也可以是动态的,也可以根据您的要求。
希望它有所帮助。