我想开发一种功能,根据文本的意思设置UILabel
的框架,当文本改变时它的框架是否改变?如果是,那么请分享任何链接或任何想法来开发它。
提前致谢。
答案 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))