Demo1
#//
// ViewController.m
// labeltext
//
// Created by bj on 2017/9/2.
// Copyright © 2017年 Doctor. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
#define UILABEL_LINE_SPACE 3
#define HEIGHT [ [ UIScreen mainScreen ] bounds ].size.height
//给UILabel设置行间距和字间距
-(void)setLabelSpace:(UILabel*)label withValue:(NSString*)str withFont:(UIFont*)font {
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
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:paraStyle, NSKernAttributeName:@1.5f
};
NSMutableAttributedString *attributeStr = [[NSMutableAttributedString alloc] initWithString:str attributes:dic];
[attributeStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 4)];
label.attributedText = attributeStr;
}
//计算UILabel的高度(带有行间距的情况)
-(CGFloat)getSpaceLabelHeight:(NSString*)str withFont:(UIFont*)font withWidth:(CGFloat)width {
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
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:paraStyle, NSKernAttributeName:@1.5f
};
CGSize size = [str boundingRectWithSize:CGSizeMake(width, HEIGHT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;
return size.height;
}
- (void)viewDidLoad {
[super viewDidLoad];
NSString * str = @"长大的寂寞第一次进入校园,遇见的便是一颗樱花树,很多学生在嬉戏打闹,很想接近他们,可,还是,没胆量。进入班级后,认识了很多人,但还是不敢主动去聊天,说话。以前,朋友之间的友谊很简单,一场游戏、一件玩具,就可能因此成为朋友。以前牵着手在瓜田里玩耍,累了,就直接躺在地上,和伙伴们说着悄悄话,看蚂蚁搬家,看蜻蜓点水……现在,有自尊心,总是害怕被拒绝,被孤立,被忽略。心里的事只能自己埋藏起来。班里会有很多的绯闻,搞得都不敢和异性接触,整天就是在忙学习,稍微有一点躲藏什么东西就会被宣传,都会被人好奇,每天和朋友也只是聊一会就继续学习。朋友很多,但很少是亲密,家长也总是不理解我们的心情,没事就是被批,和朋友的距离越来越远了……长大,好累,好寂寞。爱帮族美文网,欣赏更多美文";
UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 300, 300)];
label.backgroundColor = [UIColor yellowColor];
label.numberOfLines = 0;
[self setLabelSpace:label withValue:str withFont:[UIFont systemFontOfSize:17]];
CGRect frame = label.frame;
frame.size.height = [self getSpaceLabelHeight:str withFont:[UIFont systemFontOfSize:17] withWidth:300];
label.frame = frame;
[self.view addSubview:label];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
// Do any additional setup after loading the view, typically from a nib.
}
//富文本设置(根据NsRange 改变颜色 和 大小)
-(NSMutableAttributedString *)changeText:(NSString *)text timeFont:(UIFont *)timeFont withTimeColor:(UIColor *)timeColor timeRange:(NSRange )timeRange contentFont:(UIFont *)contentFont withContentColor:(UIColor *)contentColor contentRange:(NSRange )contentRange{
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
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 = @{NSParagraphStyleAttributeName:paraStyle, NSKernAttributeName:@1.5f
};
NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:text];
[AttributedStr addAttribute:NSFontAttributeName
value:timeFont
range:timeRange];
[AttributedStr addAttribute:NSForegroundColorAttributeName
value:timeColor
range:timeRange];
[AttributedStr addAttribute:NSFontAttributeName
value:contentFont
range:contentRange];
[AttributedStr addAttribute:NSForegroundColorAttributeName
value:contentColor
range:contentRange];
[AttributedStr addAttribute:NSHTMLTextDocumentType
value:contentColor
range:contentRange];
return AttributedStr;
}
+ (CGFloat)cellDefaultHeight:(TextEntity *)entity
{
//展开后得高度(计算出文本内容的高度+固定控件的高度)
NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:17]};
NSStringDrawingOptions option = (NSStringDrawingOptions)(NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading);
NSString * timeText = @"90:90";
NSString * newContent = [[[TextListCell alloc]init] removeHTML:entity.content];
NSString * withTime = [NSString stringWithFormat:@"%@ %@",timeText,newContent];
CGSize size = [withTime boundingRectWithSize:CGSizeMake(kWidth - 30, 80) options:option attributes:attribute context:nil].size;
return size.height + 60;
//默认cell高度
//return 120.0;
}
+ (CGFloat)cellMoreHeight:(TextEntity *)entity
{
//展开后得高度(计算出文本内容的高度+固定控件的高度)
NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:17]};
NSStringDrawingOptions option = (NSStringDrawingOptions)(NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading);
NSString * timeText = @"90:90";
NSString * newContent = [[[TextListCell alloc]init] removeHTML:entity.content];
NSString * withTime = [NSString stringWithFormat:@"%@ %@",timeText,newContent];
CGSize size = [withTime boundingRectWithSize:CGSizeMake(kWidth - 30, 100000) options:option attributes:attribute context:nil].size;
return (size.height + 60) ;
}
网友评论