我需要用不同长度的环绕文本填充单元格。我当前的例程正在令人满意地处理这个问题,但是,我担心使用一些常量。
下面的值10和260表示预期的边距和单元格宽度,但它们仅对纵向的标准清晰度分辨率准确。
是否有一些屏幕/表格对象为我提供了这些值作为我可以使用的指标而不是常量?
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell;
UILabel *lbl;
CGRect frame;
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
reuseIdentifier:AnswerIdentifier] autorelease];
frame.origin.x = 10;
frame.origin.y = 10;
frame.size.height = [self textHeight:indexPath];
frame.size.width = 260;
lbl = [[UILabel alloc] initWithFrame:frame];
lbl.lineBreakMode = UILineBreakModeWordWrap;
lbl.numberOfLines = 0;
[cell.contentView addSubview:lbl];
[lbl release];
return cell;
}
- (CGFloat)textHeight:(NSIndexPath *)indexPath {
CGSize textSize;
CGSize constraintSize;
CGFloat height;
NSString *theText = [self cellText:indexPath];
constraintSize = CGSizeMake(260.0f, MAXFLOAT);
textSize = [theText sizeWithFont:kCELL_FONT
constrainedToSize:constraintSize
lineBreakMode:UILineBreakModeWordWrap];
height = textSize.height;
return height;
}
答案 0 :(得分:0)
该表显然需要适合包含视图的框架(可能是顶层视图或窗口),因此我可能会使用该矩形的百分比或像素偏移量。
答案 1 :(得分:0)
尝试使用
[[UIScreen mainScreen] applicationBounds];
这将为当前窗口大小返回CGRect
。然后,对于您的代码,您可以使用:
CGRect screenRect = [[UIScreen mainScreen] applicationBounds];
frame.origin.x = 10;
frame.origin.y = 10;
frame.size.height = [self textHeight:indexPath];
frame.size.width = screenRect.size.width - 60.0;
假设x中的像素偏移是固定的,具有灵活的标签宽度。