Objective c 带动态宽度的UILabel-水平对齐
我在UITableView中的自定义单元格类中有一个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
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
)];
它会起作用的