iOS更改标签行号

时间:2014-03-21 10:44:55

标签: ios iphone objective-c cocoa-touch label

我尝试编码一个标签的行数。

我这样做了:

[lblName setFont:[UIFont fontWithName:@"OpenSans-CondensedLight" size:19]];
[lblName setText:[objet titre]];
[lblName setLineBreakMode:NSLineBreakByWordWrapping];
lblName.numberOfLines = 2;

但它没有运行,我只有一条线......

有人帮我PLZ?

3 个答案:

答案 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;