1. 程式人生 > >iOS UILabel設定行間距和字間距並計算高度

iOS UILabel設定行間距和字間距並計算高度

#define UILABEL_LINE_SPACE 6

#define HEIGHT [ [ UIScreen mainScreen ] bounds ].size.height

//給UILabel設定行間距和字間距

-(void)setLabelSpace:(UILabel*)label withValue:(NSString*)str withFont:(UIFont*)font {

    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle 

allocinit];

    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;

    paraStyle.alignment = NSTextAlignmentLeft;

    paraStyle.lineSpacing = UILABEL_LINE_SPACE; //設定行間距

    paraStyle.hyphenationFactor = 1.0

;

    paraStyle.firstLineHeadIndent = 0.0;

    paraStyle.paragraphSpacingBefore = 0.0;

    paraStyle.headIndent = 0;

    paraStyle.tailIndent = 0;

    //設定字間距 NSKernAttributeName:@1.5f

    

NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paraStyleNSKernAttributeName:@1.5f
};

    

    NSAttributedString *attributeStr = [[NSAttributedString allocinitWithString:str attributes:dic];

    label.attributedText = attributeStr;

}


//計算UILabel的高度(帶有行間距的情況)

-(CGFloat)getSpaceLabelHeight:(NSString*)str withFont:(UIFont*)font withWidth:(CGFloat)width {

    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle allocinit];

    paraStyle.lineBreakMode = NSLineBreakByCharWrapping;

    paraStyle.alignment = NSTextAlignmentLeft;

    paraStyle.lineSpacing = UILABEL_LINE_SPACE;

    paraStyle.hyphenationFactor = 1.0;

    paraStyle.firstLineHeadIndent = 0.0;

    paraStyle.paragraphSpacingBefore = 0.0;

    paraStyle.headIndent = 0;

    paraStyle.tailIndent = 0;

    NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paraStyleNSKernAttributeName:@1.5f
};

    

    CGSize size = [str boundingRectWithSize:CGSizeMake(width, HEIGHToptions:NSStringDrawingUsesLineFragmentOriginattributes:dic context:nil].size;

    return size.height;

}