開發和設計就像一對冤家,“抱”了一路。。。。。
一個lab控件,設計想到了很多, 於是就有了各種狀態的Lab,居上,調整間距,不同顏色巴拉巴拉……..
先來第一個:
- UILabel text 行間距
UIFont *font = [UIFont boldSystemFontOfSize:17];
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc]init];
//設置行間距
paragraph.lineSpacing = 5;
paragraph.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attributes = @{NSFontAttributeName:font,NSParagraphStyleAttributeName:paragraph};
CGSize sizeRect = [restaurantName boundingRectWithSize:CGSizeMake(ScreenWidth, 300) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size;
_lab.frame = CGRectMake(0,0,sizeRect.width,sizeRect.height);
_lab.numberOfLines = 0;
_lab.font = font;
第二彈
- text居頂顯示
有時候Label的高度確定,但是內容讓居頂,來 ~ 看代碼:
//首先要計算出text文本的大小,居頂,設置origin.y爲lab的origin.y
CGRect topRect = [self textRectForBounds:rect limitedToNumberOfLines:self.numberOfLines];
topRect.origin.y = bounds.origin.y;
//隨後在繪製text的方法裏重新繪製text文本位置
-(void)drawTextInRect:(CGRect)rect
號外:創建一個繼承於UILabel的子類,重載drawTextInRect,super調用即可。
第三彈
UILabel上顯示不同顏色
如圖:
其實UILabel上的關鍵字變顏色也可以這麼做,上代碼,range可隨意組合:
//設置字符串中 ‘任何營養’ 染成紅色
NSString *beforeStr = @"任何營養健身的問題,營養師都是詳細解答。";
//這個range你可以改成某個關鍵字替換掉NSMakeRange
NSRange range = [beforeStr rangeOfString:@"任何營養"];
NSMutableAttributedString *str = [[NSMutableAttributedString alloc]initWithString:beforeStr];
[str addAttribute:NSForegroundColorAttributeName value:COLOR_S_RED range:NSMakeRange(0, 4)];
label.attributedText = str;
效果如下:
- UILabel上顯示不同font大小
不得不說3個字本來就是一個lab加上去就行了,定睛一看,哦,字的大小不一樣哦。那不還是一個Lab嗎 ? sei讓它強大呢 ~ 來來來,瞅瞅吧 ~
//設置不同字體
NSString *heatStr = [NSString stringWithFormat:@"%@ 大卡",singleMealModel.heat];
NSMutableAttributedString *heatstr = [[NSMutableAttributedString alloc]initWithString:heatStr];
[heatstr addAttribute:NSFontAttributeName value:FONT_S_13 range:NSMakeRange(singleMealModel.heat.length,3)];
cell.standardLab.attributedText = heatstr;
效果圖如下,明白了嗎 ?
哦了 ~ 週末愉快 ! 明天繼續 !