在Xcode中左右对齐部分文本

时间:2012-12-09 00:31:08

标签: ios xcode uitableview alignment

我正在用营养成分填写UITableView表。每行包括营养素的绝对量以及每日百分比值。我想将数量与每行的左侧和每日的百分比值对齐到右侧,以便信息看起来更整洁,以便所有值排成一行。有什么方法可以做到这一点吗?谢谢!

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath     *)indexPath
{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NutritionCell" forIndexPath:indexPath];


    if(!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"NutritionCell"];
    }


    CGRect oldFrame = cell.frame;
    cell.textLabel.frame = CGRectMake(oldFrame.origin.x, oldFrame.origin.y, tableView.frame.size.width/2, oldFrame.size.height);
    cell.detailTextLabel.frame = CGRectMake(oldFrame.origin.x + tableView.frame.size.width/2, oldFrame.origin.y, tableView.frame.size.width/2, oldFrame.size.height);

    cell.textLabel.text = [factamount objectAtIndex:indexPath.row];
    cell.detailTextLabel.text = [percentDV objectAtIndex:indexPath.row];
    return cell;

}

2 个答案:

答案 0 :(得分:2)

您可以使用以下代码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }

    cell.textLabel.text = @"Left";
    cell.detailTextLabel.text = @"Right";

    return cell;
}

如果要在单元格中使用多个自定义标签(多于两个),也可以将其添加为cell.contentView的子视图并使用textAlignment属性进行对齐。您可以将这些标签的框架设置为在适当的位置显示。

在这种情况下,您需要将其作为

myLabel1.textAlignment = NSTextAlignmentLeft;
myLabel2.textAlignment = NSTextAlignmentRight;

答案 1 :(得分:2)

您也可以使用UITableViewCellStyleValue1执行此操作。这会自动为单元格添加2个标签:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *cellID = @"CELLID";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
        if(!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellID];
        }

        cell.textLabel.text = @"AMOUNT TEXT";
        cell.detailTextLabel.text = @"PERCENT TEXT";
        return cell;
    }