IOS7中動態計算UILable的高度
阿新 • • 發佈:2017-06-06
content tof 送別 lds %d bre 內心 大學生活 hsi
.m文件
這個類是在別人的基礎上改動的。
.h文件
#import <UIKit/UIKit.h> @interface UILabel (ContentSize) - (CGSize)contentSize; @end
.m文件
#import "UILabel+ContentSize.h" @implementation UILabel (ContentSize) - (CGSize)contentSize { NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = self.lineBreakMode; paragraphStyle.alignment = self.textAlignment; NSDictionary * attributes = @{NSFontAttributeName : self.font, NSParagraphStyleAttributeName : paragraphStyle}; CGSize contentSize = [self.text boundingRectWithSize:CGSizeMake(self.frame.size.width, MAXFLOAT) options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:attributes context:nil].size; return contentSize; } @end
這個類是在別人的基礎上改動的。
以下是詳細的實現:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 20, 280, 20)]; label.font = [UIFont boldSystemFontOfSize:15.0f]; //UILabel的字體大小 label.numberOfLines = 0; //必須定義這個屬性,否則UILabel不會換行 label.textColor = [UIColor whiteColor]; label.textAlignment = NSTextAlignmentLeft; //文本對齊方式 [label setBackgroundColor:[UIColor redColor]]; label.lineBreakMode = NSLineBreakByWordWrapping; NSLog(@"%d",label.lineBreakMode); //寬度不變,依據字的多少計算label的高度 NSString *str = @"伴隨著張震嶽的這首老歌,仿佛我又回到了過去,回到了大學即將分別的日子,帶著不舍與迷惘和他們說再見。又是一年畢業季,看著朋友圈各種曬畢業照,畢業旅行照,學士帽漫天的飛舞。各種送別活動在鮮花和掌聲中慢慢退去色彩,心裏不時充滿著各種思念。離開校園整整一年了,每當和別人談起母校各種自豪,大學生活各種多彩。人生經歷各種豐富,事實上內心還是留有種種遺憾;四年的蹉跎時光,有人收獲了知識。有人收獲了人生閱歷,還有人收獲了愛情,而我收獲的僅僅有那清純的友誼,兄弟情。分別整整一年了,還記得那時我們都是多麽的不舍,同學情,兄弟情,混合著酒精流到心裏,一米八幾的大男孩哭的稀裏嘩啦,擁抱著說再見;之後的我們離開了熟悉的校園,奔赴在各個工作崗位。去體現自己的價值,為生活而忙碌著;一轉身。有些人真的就再也不見。
畢業一周年,你們還好嗎?工作還順利嗎?學習還順心嗎?一切都回不了頭,僅僅能在心裏默默地想著你們,希望你們安好。
。。"; // CGSize size = [str sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; // //依據計算結果又一次設置UILabel的尺寸 // [label setFrame:CGRectMake(20, 10, 280, size.height)]; // label.text = str; label.text = str; [label setFrame: CGRectMake(20, 20, 280, [label contentSize].height)]; [self.view addSubview:label];
上面的凝視部分是老的方法。
這裏要註意幾點:1、我在調用contentSize前設置下label.lineBreakMode屬性。
2、文字究竟換不換行的關鍵是設置CGSizeMake(w,h),差別主要在w,h的值改動。
Demo地址
IOS7中動態計算UILable的高度