我尝试编码一个标签的行数。
我这样做了:
[lblName setFont:[UIFont fontWithName:@"OpenSans-CondensedLight" size:19]];
[lblName setText:[objet titre]];
[lblName setLineBreakMode:NSLineBreakByWordWrapping];
lblName.numberOfLines = 2;
但它没有运行,我只有一条线......
有人帮我PLZ?答案 0 :(得分:1)
对于设置动态帧UILabel
,请使用以下方法
-(void) setDynamicHeightOfLabel:(UILabel *) myLabel withLblWidth:(CGFloat) width andFontSize:(int) fontSize
{
CGSize myLabelSize = CGSizeMake(width, FLT_MAX);
CGSize expecteingmyLabelSize = [myLabel.text sizeWithFont:myLabel.font constrainedToSize:myLabelSize lineBreakMode:myLabel.lineBreakMode];
CGRect lblFrame = myLabel.frame;
lblFrame.size.height = expecteingmyLabelSize.height;
myLabel.frame = lblFrame;
int addressLine = myLabel.frame.size.height/fontSize;
myLabel.numberOfLines = addressLine;
}
在上面的方法中,您只需要传递标签对象,标签的宽度和文字的字体大小,例如...
[self setDynamicHeightOfLabel:lblName withLblWidth:passWidth andFontSize:19];
答案 1 :(得分:1)
使用此方法:
- (CGSize)getSizeForText:(NSString *)text maxWidth:(CGFloat)width font:(NSString *)fontName fontSize:(float)fontSize {
CGSize constraintSize;
constraintSize.height = MAXFLOAT;
constraintSize.width = width;
NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[UIFont fontWithName:fontName size:fontSize], NSFontAttributeName,
nil];
CGRect frame = [text boundingRectWithSize:constraintSize
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attributesDictionary
context:nil];
CGSize stringSize = frame.size;
return stringSize;
}
将此处返回的CGSize
设置为label
帧大小。
答案 2 :(得分:0)
你需要增加UILabel的高度。 只需使用以下方法获取uilabel文本的高度,然后设置如下行数:
- (CGSize)calculateRowHeightAndWidth:(NSString *)text font:(UIFont *)font width:(CGFloat)width
{
CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(width, 9999)
lineBreakMode:UILineBreakModeWordWrap];
return size;
}
textDetailLabel.numberOfLines = size.height/height size of font.0;