UILabel自动调整大小(高度,宽度)

要设置label的行数为0,注意一点小问题,就是一般情况下计算出来的高度和宽度在应用中还是会出现点问题的[显示偏小],只要在设置高度或者宽度的时候在actualSize的基础上加上3~5像素即可

    UIFont * textFont = [UIFont systemFontOfSize:36];
    //最大尺寸
    // MAXFLOAT 为可设置的最大高度
    // 长度固定,自动调整高度
    CGSize size = CGSizeMake(300, MAXFLOAT);
    // 高度固定,自动调整长度
    CGSize size2 = CGSizeMake(MAXFLOAT,18 );
    //获取当前那本属性
    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:textFont,NSFontAttributeName, nil];
    //实际尺寸(需要自动调整什么,就取width或者height)
    CGSize actualSize = [label.text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;
写了一个函数
/** isWidth是否需要的是宽度,length另外一边的长度(固定的长度),text内容,fontOfSize文字大小 */
- (CGFloat)getFloat:(BOOL)isWidth fixedLength:(float)length withLabelText:(NSString *)text fontOfSize:(float)fontOfSize {
    
    UIFont * textFont = [UIFont systemFontOfSize:fontOfSize];
    
    // MAXFLOAT 为可设置的最大高度
    CGSize size = CGSizeMake(0, 0);
    if (isWidth) {
        // 高度固定,自动调整长度
        size = CGSizeMake(MAXFLOAT,length);
    } else {
        // 长度固定,自动调整高度
        size = CGSizeMake(length, MAXFLOAT);
    }
    
    //获取当前那本属性
    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:textFont,NSFontAttributeName, nil];
    //实际尺寸(需要自动调整什么,就取width或者height)
    CGSize actualSize = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;

    if (isWidth) {
        return actualSize.width+3;
    } else {
        return actualSize.height+3;
    }
}

你可能感兴趣的:(ios,UILabel,应用)