在我的UITableViewCells中,我正在显示不同长度的文本。为了容纳更大量的文本,同时也不需要小文本数量在巨大的表格单元格中,我在这里设置行的高度...
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
float padding = 40.0f;
CGSize constraintSize;
constraintSize.width = 320.0f - padding - padding;
constraintSize.height = MAXFLOAT;
CGSize theSize = [thisrowstext sizeWithFont:[UIFont systemFontOfSize:14.0f]
constrainedToSize:constraintSize
lineBreakMode:UILineBreakModeWordWrap];
if(theSize.height < 24.0f) return 44.0f;
else return theSize.height + 20.0f;
}
...它运行良好,不幸的是textLabel的宽度似乎也受到影响,一些textLAbels(取决于行数)被推入几个像素。我已经尝试设置缩进值,但这不起作用。还有其他人遇到过这个吗?
编辑:我正在添加我正在使用的UITableViewCell子类的layoutSubviews方法(没有NIB)。
- (void)layoutSubviews
{
[super layoutSubviews];
if (self.hideImage)
{
self.imageView.alpha = 0.0f;
self.imageView.frame = CGRectMake(-40.0f, 1.0f, 40.0f, 40.0f);
CGRect frame = self.textLabel.frame;
self.textLabel.frame = CGRectMake(frame.origin.x - 40.0f, frame.origin.y, frame.size.width + 40.0f, frame.size.height);
[self.textLabel setNeedsLayout];
}
else
{
self.imageView.alpha = 1.0f;
self.imageView.frame = CGRectMake(1.0f, 1.0f, 40.0f, 40.0f);
[self.textLabel setNeedsLayout];
}
}
编辑:还添加了cellForRowAtIndexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *TableCellViewWithHidableImageIdentifier = @"TableCellViewWithHidableImage";
TableCellViewWithHidableImage *cell = (TableCellViewWithHidableImage *)[tableView dequeueReusableCellWithIdentifier:TableCellViewWithHidableImageIdentifier];
if (cell == nil)
{
cell = [[[TableCellViewWithHidableImage alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:TableCellViewWithHidableImageIdentifier] autorelease];
}
cell.hideImage = NO;
cell.imageView.image = [UIImage imageNamed:@"empty.png"];
cell.textLabel.font = [UIFont systemFontOfSize:16.0f];
cell.textLabel.numberOfLines = 0;
cell.textLabel.text = @"whatever";
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
答案 0 :(得分:1)
如果不了解如何生成表格单元格,很难说清楚。你的细胞使用笔尖吗?我发现使用笔尖更容易自定义表格单元格,所以如果你还没有,请尝试一下。
我怀疑您的一个或多个表格单元格的子视图中的autoresizeMask可能有问题。
答案 1 :(得分:0)
这是一个猜测,但它看起来像是在单元格左侧的imageView。好像单元格越来越高,它越来越宽(试图保持纵横比?),这就是将文本推向右边。奇怪的是你的形象没有被拉伸。在layoutSubviews
期间,可能值得查看该图像视图的内容。如果您的自定义单元格没有实现此方法,那么基类的实现可能正在做您不期望的事情。您可以在调用NSLog
之前和之后覆盖它并[super layoutSubviews]
到图像视图的框架,以查看最新情况。