2

在我的应用程序(iPad)中,需要创建一个包含许多列的 UITableView。为此,我必须创建一个自定义 UITableViewCell 来提供所需的列。

现在,是时候在这些列上放置标题了。在“viewForHeaderInSection”委托中,我想放置一个扩展表格宽度的标签。

一切顺利,背景颜色已经设置好,可以很好地延伸到视图的宽度。

但是当我去使用时:

label.text = [NSString stringWithFormat:@"  Date      Dist       Litres        Cost($)"];

我没有让文本展开来代表上面的例子。我得到的更像是:

" Date Dist Litres Cost($)"

如何恢复标题文本中所需的空格?

4

3 回答 3

5

您应该创建一个具有四个 UILabel 子视图的标题视图。

像这样的东西:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];
    // 4 * 69 (width of label) + 3 * 8 (distance between labels) = 300
    UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 4, 69, 22)];
    label1.text = @"Date";
    [headerView addSubview:label1];
    UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(87, 4, 69, 22)];
    label2.text = @"Dist";
    [headerView addSubview:label2];
    UILabel *label3 = [[UILabel alloc] initWithFrame:CGRectMake(164, 4, 69, 22)];
    label3.text = @"Litres";
    [headerView addSubview:label3];
    UILabel *label4 = [[UILabel alloc] initWithFrame:CGRectMake(241, 4, 69, 22)];
    label4.text = @"Cost($)";
    [headerView addSubview:label4];
    return headerView;
}

根据您的要求调整颜色、字体和框架。

这比依赖空格字符的宽度要干净得多。
如果您使用固定宽度的字体,您的方式将起作用,但我建议您反对它。

当您想将您的应用程序本地化为不同的语言时,计算空间的任务将成为一场噩梦。

于 2013-04-27T11:28:18.090 回答
2

好吧,我不知道您要做什么以及目的是什么,并且确定它看起来很奇怪。但只是为了在objective-c中的字符串中获取空格,您可以简单地添加“\t”,它会添加等于TAB的空格。

label.text = [NSString stringWithFormat:@"Date \t Dist \t Liters \t Cost($)"];

这将在您的字符串中添加空格,但更好的方法是为不同的列使用不同的标题并设置它们的标题标题,正如其他答案所建议的那样

于 2013-04-27T13:07:26.757 回答
1

如果您通过在UIView(让我们调用headerView)中添加标签到它的适当位置并对齐所有标签NSTextAlignmentCenter然后相应地设置标签标题来做到这一点会很好。然后返回那个headerView

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
于 2013-04-27T10:56:31.037 回答