我在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;
但没有任何反应。
有人可以帮我解决这个问题吗?
答案 0 :(得分: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);
答案 1 :(得分:3)
那是因为你在设置框架时更改了标签的来源:cell.cellResult.frame.origin.x,
您可以更改边界以仅管理宽度。
答案 2 :(得分: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
)];
它会起作用