如何在UITableView中更改文本的位置?

时间:2009-05-22 21:33:35

标签: iphone cocoa-touch uitableview

如何更改文本的位置并在UITableView中显示FULL字符串?

这是我所拥有的屏幕截图,一旦你看到它就会知道我的意思。谢谢 My App http://img188.imageshack.us/img188/9926/chucknhelp.tif

3 个答案:

答案 0 :(得分:2)

您可以在不继承UITableViewCell的情况下执行此操作。

在方法tableView:cellForRowAtIndexPath:中,创建基本UITableViewCell并更改此单元格中包含的UILabel的属性。更改最大行数以适合单元格中的更多文本。

不幸的是,属性无法访问单元格的标签,因此您需要使用subviews属性来获取它。

当然,这会使用UITableViewCell的实现细节,因此它可能会与SDK的未来版本有所不同。小心使用。

以下是一个例子:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"YourCellId"];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"YourCellId"] autorelease];
        cell.font = [UIFont systemFontOfSize:16];
        UILabel* cellLabel = [cell.contentView.subviews objectAtIndex:0];
        [cellLabel setNumberOfLines:3];
    }
    cell.text = @"Your text";
    return cell;
}

<强>更新

要设置行高以适合文本,您可以执行以下操作:

1。设置单元格高度以适合文本。

你需要这样的东西:

CGSize textSize = [text sizeWithFont:font
                   constrainedToSize:CGSizeMake(313, 1000)
                       lineBreakMode:UILineBreakModeWordWrap];
cell.frame = CGRectMake(0.0f, 0.0f, 320.0, textSize.height);

2。使用tableView:heightForRowAtIndexPath:方法返回单元格高度。

例如:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell* cell = [self tableView:(UITableView*)self.view cellForRowAtIndexPath:indexPath];
    CGRect cellFrame = cell.frame;
    return cellFrame.size.height;
}

答案 1 :(得分:0)

子类UITableViewCell,并在子类的loadView方法中,在其contentView内创建一个UILabel。将此标签设置为具有适当的包装和位置。

答案 2 :(得分:0)

亚当说得对。有关更多细节(以及快速滚动闪电的方法),您可以在atebits.com上查看此条目,完全绕过UILabel方法。

Loren Brichter's UITableViewCell subclassing example

您还可以查看来自developer.apple.com的TableViewSuite示例。它包含5个不同的示例,复杂度越来越高,用于构建自定义TableView。最后一个示例在结构上非常类似于atebits.com上的教程。

斯坦福大学iPhone课程的第8讲也是关于Scroll和TableViews的,并且有一些子类化UITableViewCell的例子。

iPhone Course