121 lines
5.0 KiB
Mathematica
121 lines
5.0 KiB
Mathematica
|
|
//
|
|||
|
|
// UILabel+ChangeSpace.m
|
|||
|
|
// romantic
|
|||
|
|
//
|
|||
|
|
// Created by bj_szd on 2022/4/9.
|
|||
|
|
// Copyright © 2022 romantic. All rights reserved.
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#import "UILabel+ChangeSpace.h"
|
|||
|
|
|
|||
|
|
@implementation UILabel (ChangeSpace)
|
|||
|
|
|
|||
|
|
+ (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space {
|
|||
|
|
|
|||
|
|
NSString *labelText = label.text;
|
|||
|
|
if (labelText == nil) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];
|
|||
|
|
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
|
|||
|
|
paragraphStyle.alignment = NSTextAlignmentJustified;//两端对齐
|
|||
|
|
[paragraphStyle setLineSpacing:space];
|
|||
|
|
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
|
|||
|
|
label.attributedText = attributedString;
|
|||
|
|
// [label sizeToFit];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
+ (void)changeWordSpaceForLabel:(UILabel *)label WithSpace:(float)space {
|
|||
|
|
|
|||
|
|
NSString *labelText = label.text;
|
|||
|
|
if (labelText == nil) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText attributes:@{NSKernAttributeName:@(space)}];
|
|||
|
|
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
|
|||
|
|
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
|
|||
|
|
label.attributedText = attributedString;
|
|||
|
|
[label sizeToFit];
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
+ (void)changeSpaceForLabel:(UILabel *)label withLineSpace:(float)lineSpace WordSpace:(float)wordSpace {
|
|||
|
|
|
|||
|
|
NSString *labelText = label.text;
|
|||
|
|
if (labelText == nil) {
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText attributes:@{NSKernAttributeName:@(wordSpace)}];
|
|||
|
|
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
|
|||
|
|
[paragraphStyle setLineSpacing:lineSpace];
|
|||
|
|
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
|
|||
|
|
label.attributedText = attributedString;
|
|||
|
|
[label sizeToFit];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
改变label文字中某段文字的颜色,大小
|
|||
|
|
label 传入label(传入前要有文字)
|
|||
|
|
oneW 从第一个文字开始
|
|||
|
|
twoW 到最后一个文字结束
|
|||
|
|
color 颜色
|
|||
|
|
size 尺寸
|
|||
|
|
*/
|
|||
|
|
- (void)LabelAttributedString:(UILabel*)label firstW:(NSString *)oneW size:(CGFloat)size {
|
|||
|
|
// 创建Attributed
|
|||
|
|
NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:label.text];
|
|||
|
|
// 需要改变的最后一个文字的位置
|
|||
|
|
NSRange range = [[noteStr string] rangeOfString:oneW];
|
|||
|
|
// 改变字体大小及类型
|
|||
|
|
[noteStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:size] range:range];
|
|||
|
|
// 为label添加Attributed
|
|||
|
|
[label setAttributedText:noteStr];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// label底部对齐
|
|||
|
|
- (void)bottomAlignment
|
|||
|
|
{
|
|||
|
|
CGSize size = [self.text sizeWithAttributes:@{NSFontAttributeName:self.font}];
|
|||
|
|
CGRect rect = [self.text boundingRectWithSize:CGSizeMake(self.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:self.font} context:nil];
|
|||
|
|
self.numberOfLines = 0;
|
|||
|
|
NSInteger newLinesToPad = (self.frame.size.height - rect.size.height)/size.height;
|
|||
|
|
for (NSInteger i = 0; i < newLinesToPad; i ++) {
|
|||
|
|
self.text = [NSString stringWithFormat:@" \n%@",self.text];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// label顶部对齐
|
|||
|
|
- (void)topAlignment
|
|||
|
|
{
|
|||
|
|
CGSize size = [self.text sizeWithAttributes:@{NSFontAttributeName:self.font}];
|
|||
|
|
CGRect rect = [self.text boundingRectWithSize:CGSizeMake(self.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:self.font} context:nil];
|
|||
|
|
self.numberOfLines = 0;
|
|||
|
|
NSInteger newLinesToPad = (self.frame.size.height - rect.size.height)/size.height;
|
|||
|
|
for (NSInteger i = 0; i < newLinesToPad; i ++) {
|
|||
|
|
self.text = [self.text stringByAppendingString:@"\n "];
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
+ (CGFloat)textHeight:(NSString *)text font:(UIFont *)font width:(CGFloat)width lineSpace:(CGFloat)lineSpace {
|
|||
|
|
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
|
|||
|
|
paragraphStyle.lineBreakMode = NSLineBreakByCharWrapping;
|
|||
|
|
paragraphStyle.lineSpacing = lineSpace;
|
|||
|
|
//Attribute传和label设定的一样
|
|||
|
|
NSDictionary * attributes = @{
|
|||
|
|
NSFontAttributeName:font,
|
|||
|
|
NSParagraphStyleAttributeName: paragraphStyle
|
|||
|
|
};
|
|||
|
|
//这里的size,width传label的宽,高默认都传MAXFLOAT
|
|||
|
|
CGSize textRect = CGSizeMake(width, MAXFLOAT);
|
|||
|
|
CGFloat textHeight = [text boundingRectWithSize: textRect
|
|||
|
|
options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading
|
|||
|
|
attributes:attributes
|
|||
|
|
context:nil].size.height;
|
|||
|
|
return textHeight;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@end
|
|||
|
|
|