iOS Tableview。自定义单元格的内容视图始终为320宽度和44高度

时间:2015-05-22 09:44:58

标签: ios objective-c uitableview heightforrowatindexpath

因此,我以编程方式在frame中设置UITableViewUIViewController的设置,然后使用自定义UITableViewCell将数据填充到其中。问题是自定义单元格始终的宽度为framecontentView 320 44 {{1即使我用height设置它。

我的代码:

创建表:

initWithFrame

cellRowForIndexpath方法:

UITableView *pickPlayerNameTable = 
  [[UITableView alloc] initWithFrame:CGRectMake(10, 
                                                15,  
                                                (viewSize.width - 20), 
                                                4 * (viewSize.height/5) - 15)];

pickPlayerNameTable.backgroundColor = [UIColor clearColor];
pickPlayerNameTable.separatorStyle = UITableViewCellSeparatorStyleNone;
// playerNameTable.

[self.view addSubview:pickPlayerNameTable];
[self.view bringSubviewToFront:pickPlayerNameTable];

//set the controller as the tables delegate and data source
pickPlayerNameTable.delegate = self;
pickPlayerNameTable.dataSource = self;

最后一个自定义单元格- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *cellIdentifier = @"playerNameSellectionCell"; PlayerNameCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if(cell==nil) { cell = [[PlayerNameCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; } //set the label to the corresponding player cell.playerNumberLabel.text = [NSString stringWithFormat:@"Παίκτης %ld:", (indexPath.row + 1)]; return cell; } 方法:

initWithStlye

当前最终结果的图像:

Current cell Result

正如您所看到的那样,文本字段不是从中间部分开始,也不是从宽度的一半开始,这是因为它总是具有320的宽度,即使tableview小于那个(运行时的情况) iphone 5)或更大(iphone 6)。

请帮忙吗?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用委托方法设置高度:

// For swift:
func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat

// For Objective-C
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

答案 1 :(得分:1)

我认为Antoine的回答是正确的,但是如果您关于 CustomCell的子视图的问题需要布局子视图。根据{{​​3}}

  

layoutSubviews - 如果您需要对子视图的布局进行更精确的控制,而不是约束或自动调整行为提供,请实现此方法。

因此您需要在 UITableViewCell

中实施- (void)layoutSubviews方法

您还应该实施

  - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

如果不这样做,则单元格高度始终为默认值。