我想根据文本长度设置uilabel的宽度,然后在其上面使它更宽一些。文字可能不同,所以我不能只预定uilabel的宽度。我的方法是获取文本的宽度,然后再添加10.0,但它不起作用。
CGSize tSize = [[self.label1 text] sizeWithAttributes:@{NSFontAttributeName:[self.label1 font]}];
CGFloat tWidth = tSize.width + 10.0;
self.label1.frame = CGRectMake(self.label1.frame.origin.x, self.label1.frame.origin.y, tWidth, self.label1.frame.size.height);
self.label1.backgroundColor = [UIColor blueColor];
非常感谢任何建议。
答案 0 :(得分:1)
您可能希望使用[yourLabel sizeToFit];
或[yourLabel sizeThatFits: <#your target size#>];
sizeToFit
根据当前frame.size
,text
和font
您的标签在其当前numberOfLines
内调整其大小提供。
然后你可以改变尺寸
[yourLabel sizeToFit];
CGRect rect = yourLabel.frame;
rect.size.width += 10;
yourLabel.frame = rect;
sizeThatFits:(CGSize)size
不会调整标签大小,但会返回适合您作为参数传递的大小的大小。
sizeToFit
在内部使用sizeThatFits:(CGSize)size
。
您可以通过执行此操作来更改尺寸
CGSize exampleSize = (CGSize){300, 300};
CGSize fittingSize = [yourLabel sizeThatFits: exampleSize];
CGRect rect = yourLabel.frame;
rect.size.width = fittingSize.width;
rect.size.height = fittingSize.height;
yourLabel.frame = rect;
即使您正在使用yourLabel.attributedText