iOS:如何根据文本设置UILabel的框架?

时间:2011-08-30 10:42:47

标签: ios iphone objective-c

我想开发一种功能,根据文本的意思设置UILabel的框架,当文本改变时它的框架是否改变?如果是,那么请分享任何链接或任何想法来开发它。

提前致谢。

4 个答案:

答案 0 :(得分:21)

label.text = @"some text of random length";
[label sizeToFit];

如果文本可能超过1行,请在调用sizeToFit之前添加label.numberOfLines = 0;;

答案 1 :(得分:5)

试试这个

NSString *sample = @"...";

CGSize txtSz = [sample sizeWithFont:[UIFont fontWithName: @"Helvetica" size: 16]];

CGRect lblFrame = CGRectMake(10,50, txtSz.width, txtSz.height);

yourLabel.frame = lblFrame;

答案 2 :(得分:4)

如果您想知道某些宽度需要高度,可以使用以下代码:

NSString *yourString = @"My great text o0";
CGSize s = [yourString sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
// s.height is your your height

有关详细信息,请参阅here

答案 3 :(得分:4)

2016年和sizeWithFont早已不复存在。

现在,在Swift 3中,使用:

let text = "Random Text"
let size = (text as NSString).size(attributes: [NSFontAttributeName : UIFont.systemFont(ofSize: 50)])
let label = UILabel(frame: CGRect(x: 0, y: 0, width: size.width, height: size.height))