有時候,我們的label設置的高度比較高,然而文字比較少,這時候文字默認就會水平局左,垂直居中顯示,我們都知道UILabel有水平局左,居右,居中的源方法,但是水平的確實沒有,這時候的效果就是文字的上面空白很多,下面空白很多,我們只需要寫一個UILabel的類就可以實現我們想要的效果,文字局左上角顯示,其實很簡單:
創(chuàng)新互聯公司是一家以網站建設、網頁設計、品牌設計、軟件運維、營銷推廣、小程序App開發(fā)等移動開發(fā)為一體互聯網公司。已累計為高空作業(yè)車租賃等眾行業(yè)中小客戶提供優(yōu)質的互聯網建站和軟件開發(fā)服務。
創(chuàng)建一個繼承與UILabel的類,只需要在.m中寫以下方法就可以
然后利用該類的名字為對象的屬性,創(chuàng)建一個UILabel就可以了
實際開發(fā)中,我們往往會遇到下面這種label:
我嘗試了下面幾種方案:
然而很不幸,這招對label的layer無效。
但是你又發(fā)現你的圖片被裁剪了:
你只看到它:
卻不知其實是它:
這招挺實在的,我也無話可說。
用button
1.???? 創(chuàng)建CGRectrect = CGRectMake(100,200,50,50);
UILabel *label = [[UILabelalloc]initWithFrame:rect];
2. ???? text ? ? 設置和讀取文本內容,默認為nil
label.text = @”文本信息”; ? ??設置內容
NSLog(@”%@”, label.text) ? ? 打印label內容
3. ???? textColor ???? 設置文字顏色,默認為黑色
lable.textColor = [UIColor redColor];
4. ???? font ???? 設置字體大小,默認17
label.font = [UIFont systemFontOfSize:20]; 跟隨系統(tǒng)默認字體
label.font=[UIFont boldSystemFontOfSize:20]; 設置字體加粗字號為20的label
label.font=[UIFont fontWithName:@"Arial"size:16]; 指定字體的方法, 還有?一種從外部導入字體的方法
5.????? textAlignment ? ?? 設置標簽文本對齊方式
label.textAlignment = NSTextAlignmentCenter; 設置文本內容居中顯示
label.textAlignment = NSTextAlignmentLeft; 設置文本內容居左顯示
label.textAlignment = NSTextAlignmentRight; 設置文本內容居右顯示
6. ???? numberOfLines ? ?? 設置文本最多顯示行數, 為0則表示行數不限(無限行)
label.numberOfLines = 2; 設置文本內容行數為2行
7. ???? enabled ? ? 只是決定了Label的繪制方式,將它設置為NO將會使文本變暗,表示它沒有激活,這時向它設置顏色值是無效的, 默認為YES;
label.enable = NO;
8. ???? highlighted 是否高亮顯示,默認為NO
label.highlighted = YES; ?
label.highlightedTextColor = [UIColor orangeColor]; 高亮顯示時的文本顏色
9. ???? ShadowColor ? ? 設置陰影顏色
[label setShadowColor:[UIColorblackColor]];
10. ???? ShadowOffset ? ?? 設置陰影偏移量
[label setShadowOffset:CGSizeMake(-1,-1)];
11. ???? baselineAdjustment ?
如果adjustsFontSizeToFitWidth屬性設置為YES,這個屬性就來控制文本基線的行為。
label.baselineAdjustment = UIBaselineAdjustmentNone;
UIBaselineAdjustmentAlignBaselines = 0默認,文本最上端與中線對齊。
? ? UIBaselineAdjustmentAlignCenters,文本中線與label中線對齊。
UIBaselineAdjustmentNone,文本最低端與label中線對齊。
12. ???? Autoshrink ? ? 是否自動收縮FixedFontSize 默認,如果Label寬度小于文字長度時,文字大小不自動縮放minimumScaleFactor 設置最小收縮比例,如果Label寬度小于文字長度時,文字進行收縮,收縮超過比例后,停止收縮。minimumFontSize 設置最小收縮字號,如果Label寬度小于文字長度時,文字字號減小,低于設定字號后,不再減小。//6.0以后不再使用了。
label.minimumScaleFactor = 0.5;
13. ???? adjustsLetterSpacingToFitWidth ? ??
? ? ? ?改變字母之間的間距來適應Label大小
? ? ? ?label.adjustsLetterSpacingToFitWidth = NO;
14. ???? lineBreakMode????設置文字過長時的顯示格式
label.lineBreakMode = NSLineBreakByCharWrapping;以字符為顯示單位顯示,后面部分省略不顯示。
label.lineBreakMode=NSLineBreakByClipping;剪切與文本寬度相同的內容長度,后半部分被刪除。
label.lineBreakMode=NSLineBreakByTruncatingHead;前面部分文字以……方式省略,顯示尾部文字內容。
label.lineBreakMode=NSLineBreakByTruncatingMiddle;中間的內容以……方式省略,顯示頭尾的文字內容。
label.lineBreakMode=NSLineBreakByTruncatingTail;結尾部分的內容以……方式省略,顯示頭的文字內容。
label.lineBreakMode=NSLineBreakByWordWrapping;以單詞為顯示單位顯示,后面部分省略不顯示。
15. ???? adjustsFontSizeToFitWidth????設置字體大小適應label寬度
label.adjustsFontSizeToFitWidth = YES;
16. ???? attributedText ? ?? 設置標簽屬性文本。
NSString*text=@"first";
NSMutableAttributedString *textLabelStr = [[NSMutableAttributedStringalloc]initWithString:text]; ? ? ??
? ?[textLabelStrsetAttributes:@{NSForegroundColorAttributeName[UIColorlightGrayColor],NSFontAttributeName:????[UIFontsystemFontOfSize:17]} range:NSMakeRange(11,10)];
label.attributedText = textLabelStr;
17. ????豎排文字顯示每個文字加一個換行符,這是最方便和簡單的實現方式。
label.text=@"請\n豎\n直\n方\n向\n排\n列";
label.numberOfLines = [label.text length];(可以直接設置成數字)
18. ????計算UIlabel 隨字體多行后的高度
CGRect bounds = CGRectMake(0,0,200,300);
heightLabel = [label?textRectForBounds:bounds limitedToNumberOfLines:20];計算20行后的Label的Frame ??
NSLog(@"%f",heightLabel.size.height);
19. ????UILabel根據字數多少自動實現適應高度
UILabel*msgLabel = [[UILabel alloc] initWithFrame:CGRectMake(15,45,0,0)];
msgLabel.backgroundColor=[UIColor lightTextColor];
[msgLabel setNumberOfLines:0];
msgLabel.lineBreakMode = UILineBreakModeWordWrap;
msgLabel.font = [UIFont fontWithName:@"Arial"size:12];
CGSize size = CGSizeMake(290,1000);
msgLabel.text = @"一個人 一首歌 一杯酒 一支煙 一部手機 一臺電腦 一杯清茶 一路清貧 一路走 一路停 一個遠方 一個你還沒到來 萬世孤獨";
CGSize msgSie = [msgLabel.text sizeWithFont:fontsconstrainedToSize:size];
[msgLabel setFrame:CGRectMake(15,45,290,msgSie.height)];
20. ???? 漸變字體
LabelUIColor *titleColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn.png"]];
NSString *title = @"Setting";
UILabel*titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0,0,80,44)];
titleLabel.textColor=titleColor;
titleLabel.text = title;
titleLabel.font = [UIFont boldSystemFontOfSize:20];
titleLabel.backgroundColor=[UIColor clearColor];
[self.view addSubview:titleLabel];
21. ??? ?Label添加邊框
titleLabel.layer.borderColor = [[UIColor grayColor] CGColor];
titleLabel.layer.borderWidth = 2;
22. 設置label內邊距
? ? .h文件
??? @interface DrawRectLabel : UILabel
??? @property ( nonatomic , assign ) UIEdgeInsets edgeInsets;
??? @end
? ? .m文件 ? ? ?需要重寫方法: ?- ( void )drawTextInRect:(CGRect)rect
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines{
?? UIEdgeInsetsinsets = self .edgeInsets;
?? CGRect rect = [ super textRectForBounds:UIEdgeInsetsInsetRect(bounds, insets)limitedToNumberOfLines:numberOfLines];
rect.origin.x? ? -= insets.left;
?? rect.origin.y? ? -= insets.top;
rect.size.width? += (insets.left+ insets.right);
rect.size.height+= (insets.top+ insets.bottom);
return rect;
}