3

我在 UITableView 的自定义单元格类中有一个 UILabel ,我使用以下代码根据其内容动态增加标签的宽度:

CGSize sizeToMakeLabel = [cell.cellResult.text sizeWithFont:cell.cellResult.font];

cell.cellResult.frame = CGRectMake(cell.cellResult.frame.origin.x, cell.cellResult.frame.origin.y, sizeToMakeLabel.width, sizeToMakeLabel.height);

使用上面的代码出现的问题是我不能再让标签右对齐(将它的宽度增加到左边而不是右边)。

如果我不使用上面的代码并在 IB 中将对齐设置为右,则对齐有效。但在这种情况下,我失去了动态宽度。

我试过:

cell.cellResult.textAlignment = UITextAlignmentRigth;
cell.cellResult.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

但什么也没发生。

有人可以帮我解决这个问题吗?

4

3 回答 3

5

您无法右对齐标签,因为您为其框架设置了实际宽度。

如果您希望它是动态的但右对齐,您可以执行以下操作:

CGSize sizeToMakeLabel = [cell.cellResult.text sizeWithFont:cell.cellResult.font];

cell.cellResult.frame = CGRectMake(cell.cellResult.frame.origin.x + cell.cellResult.frame.size.width - sizeToMakeLabel.width, cell.cellResult.frame.origin.y, sizeToMakeLabel.width, sizeToMakeLabel.height);
于 2012-10-15T13:31:18.680 回答
3

那是因为您在设置标签的框架时更改了标签的原点:cell.cellResult.frame.origin.x,

您可以更改边界以仅管理宽度。

于 2012-10-15T13:30:03.070 回答
2

您可以为标签设置框架,例如:

[self.lblTitle setFrame: CGRectMake(self.lblTitle.frame.origin.x,
                                    self.lblTitle.frame.origin.y,
                                    [self.lblTitle.text sizeWithAttributes:
                                     @{NSFontAttributeName:
                                           self.lblTitle.font}].width,
                                    self.lblTitle.frame.size.height
                                    )];

它会起作用的

于 2015-12-05T06:58:35.890 回答