Objective c 带动态宽度的UILabel-水平对齐

Objective c 带动态宽度的UILabel-水平对齐,objective-c,ios,xcode,uilabel,Objective C,Ios,Xcode,Uilabel,我在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, sizeToMake

我在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;
但什么也没发生


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

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


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

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

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

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);

您可以为标签设置框架,如下所示:

[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
                                    )];
它会起作用的