从0开始架构一个IOS程序——iOS 根据文字的长度来动态设置UILabel的大小

UIlabel根据文字的长度来动态设置的大小

#import <Foundation/Foundation.h>

@interface SINALabelUtils : NSObject


//根据文字内容来动态设置label的宽与高
//参数一 tagLabel 动态设置的label
//参数二 tagString 需要测量的文字的长度
+(UILabel *) updateLabel:(UILabel*) tagLabel andWithString:(NSString*)tagString;

//根据文字内容来动态设置label的宽与高
//参数一 tagLabel 动态设置的label
//参数二 tagString 需要测量的文字的长度
//参数三 fontSize  需要设置的文字的大小
+(UILabel *) updateLabel:(UILabel*) tagLabel andWithString:(NSString*)tagString andWithTextSize:(NSInteger) fontSize;
//根据文字内容来动态设置label的宽与高
//参数一 tagLabel 动态设置的label
//参数二 tagString 需要测量的文字的长度
//参数三 tagWidth  label 可设置的最大宽度
//参数四 tagHeight label 可设置的最大高度
//参数五 fontSize  需要设置的文字的大小
+(UILabel *)updateLabel:(UILabel *)tagLabel andWithString:(NSString *)tagString andWithTagWidth:(NSInteger) tagWidth andWithTagHeight:(NSInteger) tagHeight andWithTagFontSize:(NSInteger)fontSize;
@end
#import "SINALabelUtils.h"

@implementation SINALabelUtils


+(UILabel *)updateLabel:(UILabel *)tagLabel andWithString:(NSString *)tagString{
    return [[self class] updateLabel:tagLabel andWithString:tagString andWithTagWidth:[UIScreen mainScreen].bounds.size.width andWithTagHeight:[UIScreen mainScreen].bounds.size.height andWithTagFontSize:16];
}

+(UILabel *)updateLabel:(UILabel *)tagLabel andWithString:(NSString *)tagString andWithTextSize:(NSInteger)fontSize{
    return [[self class] updateLabel:tagLabel andWithString:tagString andWithTagWidth:[UIScreen mainScreen].bounds.size.width andWithTagHeight:[UIScreen mainScreen].bounds.size.height andWithTagFontSize:fontSize];
}

+(UILabel *)updateLabel:(UILabel *)tagLabel andWithString:(NSString *)tagString andWithTagWidth:(NSInteger) tagWidth andWithTagHeight:(NSInteger) tagHeight andWithTagFontSize:(NSInteger)fontSize{

    NSDictionary *attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:fontSize],};
    CGSize textSize = [tagString boundingRectWithSize:CGSizeMake(tagWidth, tagHeight) options:NSStringDrawingTruncatesLastVisibleLine attributes:attributes context:nil].size;;
    tagLabel.numberOfLines=0;
    //重置label的frame 主要是重设label的宽度与调试
    tagLabel.frame=CGRectMake(tagLabel.frame.origin.x, tagLabel.frame.origin.y, textSize.width, textSize.height);
    return tagLabel;
}

@end
早起的年轻人 CSDN认证博客专家 移动开发 项目管理 Java
只要用心去做,每一件事情还是有可能成功的,当然成功是没有界限的,只不过是达到自己心里的那个目标,公众号:我的大前端生涯,一个爱喝茶的程序员,通常会搞搞SpringBoot 、Herbinate、Mybatiys、Android、iOS、Flutter、Vue、小程序等.
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页