UILabel

一、簡介

<<UILabel類實現(xiàn)一個只讀的文本視圖海渊。您可以使用這個類的靜態(tài)文本,如你可能會使用它來識別你的用戶界面的其他部分哲鸳,繪制一個或多個行臣疑。基本UILabel類提供控制文本的外觀徙菠,包括它是否使用了一層陰影讯沈,或汲取的一大亮點。如果需要婿奔,您可以自定義文本的外觀進一步通過繼承

<<UILabel(標簽) : 是顯示文本的控件.在App中UILabel是出現(xiàn)頻率最高的控件之一.

<<繼承關系:UILabel --> UIView?-->UIResponder-->NSObject

<<UILabel是UIView的子類,作為子類一般是為了擴充父類的功能,UILabel擴展了文字顯示的功能,UILabel是能顯示文字的視圖.


格式為

1--> 設置文字(屬性的作用

typedef NS_ENUM(NSInteger, NSTextAlignment) {

NSTextAlignmentLeft? ? ? = 0,? ? // Visually left aligned

#if TARGET_OS_IPHONE

NSTextAlignmentCenter? ? = 1,? ? // Visually centered

NSTextAlignmentRight? ? = 2,? ? // Visually right aligned

#else /* !TARGET_OS_IPHONE */

NSTextAlignmentRight? ? = 1,? ? // Visually right aligned

NSTextAlignmentCenter? ? = 2,? ? // Visually centered

#endif

NSTextAlignmentJustified = 3,? ? // Fully-justified. The last line in a paragraph is natural-aligned.

NSTextAlignmentNatural? = 4,? ? // Indicates the default alignment for script

}(如果屬性有枚舉類型的話缺狠,這里會有枚舉類型說明

label.text? = @"Hello World!!!"; ? (這是具體的例子

@property(nullable, nonatomic,copy) ? NSString ? ? ?*text;// 設置顯示文字,?默認是空的 ??(這是屬性的說明


二脸秽、UILabel的文本屬性(屬性的順序與蘋果API一致)

1-->設置文字

label.text? = @"Hello World!!!";

@property(nullable, nonatomic,copy) ? NSString ? *text;// 設置顯示文字儒老,?默認是空的

2-->設置字號//一般方法

label.font = [UIFont systemFontOfSize:30];

@property(null_resettable, nonatomic,strong) UIFont *font;// ?設置字體(系統(tǒng)字體默認17號字體)

3-->文字字體加粗//系統(tǒng)加粗方法

[Label setFont:[UIFont boldSystemFontOfSize:25]];

4-->設置文字字體和字號

label.font = [UIFont fontWithName:@"Zapfino"size:30];

5-->設置文字字體加粗

[Label setFont:[UIFont fontWithName:@"Helvetica-Bold"size:25]];

6-->設置文字顏色

label.textColor =? [UIColor blueColor];

@property(null_resettable, nonatomic,strong) UIColor ? *textColor;// ?字體的顏色(默認是黑色)

7-->陰影顏色--設置文字的陰影顏色

label.shadowColor = [UIColor redColor];

@property(nullable, nonatomic,strong) UIColor ?*shadowColor;// ? 陰影的顏色


8--> shadowOffset?陰影偏移(必須先設置文字的陰影顏色)--讓文字在原有的基礎上偏移

label.shadowOffset = CGSizeMake(2,2);

@property(nonatomic)? ? ? ? CGSize ? ? ?shadowOffset;// 陰影的偏移量,默認是 CGSizeMake(0, -1)?

9-->文字對齊方式

typedef NS_ENUM(NSInteger, NSTextAlignment) {

NSTextAlignmentLeft? ? ? = 0,? ? // 居左對齊

#if TARGET_OS_IPHONE

NSTextAlignmentCenter? ? = 1,? ? //居中對齊

NSTextAlignmentRight? ? = 2,? ? //?居右對齊

#else /* !TARGET_OS_IPHONE */

NSTextAlignmentRight? ? = 1,? ? //居右對齊

NSTextAlignmentCenter? ? = 2,? ? //居中對齊

#endif

NSTextAlignmentJustified = 3,? ? //合理鋪滿 等同于居左

NSTextAlignmentNatural? = 4,? ? //默認 等同于居左

}

label.textAlignment = NSTextAlignmentCenter;

@property(nonatomic)? ? ? ? NSTextAlignment? ? textAlignment;//? 對齊方式记餐,默認是NSTextAlignmentNatural?(iOS 9之前, 默認是 NSTextAlignmentLeft)

注意:

默認都是豎直居中的

UILabel不能設置豎直方向的排列布局驮樊,但是可以通過sizeToFit改變label的frame來實現(xiàn)曲線救國。

10-->斷行模式

typedef NS_ENUM(NSInteger, NSLineBreakMode) {

NSLineBreakByWordWrapping = 0,? ? //以單詞為顯示單位顯示,后面部分省略不顯示囚衔。

NSLineBreakByCharWrapping, //以字符為顯示單位顯示挖腰,后面部分省略不顯示。

NSLineBreakByClipping, //剪切與文本寬度相同的內(nèi)容長度练湿,后半部分被刪除猴仑。

NSLineBreakByTruncatingHead, //前面部分文字以……方式省略,顯示尾部文字內(nèi)容肥哎。

NSLineBreakByTruncatingTail, //結(jié)尾部分的內(nèi)容以……方式省略辽俗,顯示頭的文字內(nèi)容

NSLineBreakByTruncatingMiddle //中間的內(nèi)容以……方式省略,顯示頭尾的文字內(nèi)容篡诽。

} NS_ENUM_AVAILABLE(10_0, 6_0);

label.lineBreakMode = NSLineBreakByClipping;

@property(nonatomic)? ? ? ? NSLineBreakMode? ? lineBreakMode(換行方式);// 默認是 NSLineBreakByTruncatingTail.用于多行和多行文本 字符截斷類型 設置文字過長時的顯示格式?

例子:

NSLineBreakByClipping--會出現(xiàn)顯示半個字的情況

NSLineBreakByTruncatingHead--沒顯示玩的文字會以省略號形式代替顯示(省略號出現(xiàn)在左下角)

NSLineBreakByTruncatingTail--(省略號出現(xiàn)在右下角)

NSLineBreakByTruncatingTail--(省略號出現(xiàn)在最后一行的中間位置)

三崖飘、UILabel的富文本屬性

1-->attributedText更改任意文字的顏色和字體大小

NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:label.text];-->先把label上的文字賦值給可變字符串

[str addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(5,10)];-->設置更改后的顏色和改變文字的區(qū)域

[str addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Courier-BoldOblique" size:30.0] range:NSMakeRange(20, 25)];-->設置更改后的字體大小和改變文字的區(qū)域

label.attributedText = str;-->把改后的字符串重新賦值給label

@property(nullable, nonatomic,copy) NSAttributedString *attributedText NS_AVAILABLE_IOS(6_0);?

四、UILabel的高亮屬性

1-->highlighted高亮顯示時候的文本顏色

label.highlightedTextColor=[UIColor blueColor];//高亮顯示時候的文本顏色

@property(nullable, nonatomic,strong) ? ? ? ? ? ? ? UIColor *highlightedTextColor; //?高亮 狀態(tài)的字體顏色

2-->highlighted是否高亮顯示

label.highlighted=YES;

@property(nonatomic,getter=isHighlighted) BOOL ? ? highlighted;? ? ? ? ? //是否高亮杈女, 默認是NO

3-->設置是否能與用戶進行交互

label.userInteractionEnabled = YES;

@property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled;? // ? 設置是否能與用戶進行交互朱浴,默認沒有打開交互

4-->設置label中的文字是否可變

label.enabled = YES;

@property(nonatomic,getter=isEnabled)? ? ? ? ? ? ? ? BOOL enabled; // 設置label中的文字是否可變,默認值是YES

五达椰、UILabel的換行屬性

1-->設置文字換行

label.numberOfLines = 0;

@property(nonatomic) NSInteger numberOfLines;//換行?默認值是1行翰蠢。0值意味著沒有限制

注意:

// 最大顯示的行數(shù)(默認是1)

// Δ 這里需要去理解一下

//? 1. 當label的內(nèi)容足夠多, 而且, label足夠高, 最大顯示numberOfLines行

//? 2. 當label的內(nèi)容足夠多, 但是, label的高度不夠高, 最大顯示label能容納多少行

//? 3. 當label的內(nèi)容不夠多, 能顯示多少行, 顯示多少行

// o 表示不限制最大行數(shù)

六、UILabel的自適應屬性

1-->設置字體自適應adjustsLetterSpacingToFitWidth

label.adjustsLetterSpacingToFitWidth=YES;

@property(nonatomic) BOOL adjustsFontSizeToFitWidth; ? ? ? ? // default is NO? 設置字體大小適應label寬度???? 默認NO

2-->控制文本基線

typedef NS_ENUM(NSInteger, UIBaselineAdjustment) {

UIBaselineAdjustmentAlignBaselines = 0, // default. used when shrinking text to position based on the original baseline?默認啰劲,文本最上端與中線對齊

UIBaselineAdjustmentAlignCenters,//文本中線與label中線對齊

UIBaselineAdjustmentNone,//文本最低端與label中線對齊梁沧。

};

label.baselineAdjustment=UIBaselineAdjustmentAlignBaselines;

@property(nonatomic) UIBaselineAdjustment baselineAdjustment; // 默認是UIBaselineAdjustmentAlignBaselines,如果adjustsFontSizeToFitWidth屬性設置為YES呈枉,這個屬性就來控制文本基線的行為

3-->minimumScaleFactor設置最小收縮比例

label.minimumScaleFactor=0.5;

@property(nonatomic) CGFloat minimumScaleFactor NS_AVAILABLE_IOS(6_0); // 默認是0

注意:

Fixed?Font?Size默認趁尼,如果label寬度小于文字長度時,文字大小不自動縮放

minimumScaleFactor設置最小收縮比例猖辫,如果Label寬度小于文字長度時酥泞,文字進行收縮,收縮超過比例后啃憎,停止收縮芝囤。

4-->設置多行l(wèi)abel的最大寬度的

label.allowsDefaultTighteningForTruncation=YES;這個屬性是用來設置多行l(wèi)abel的最大寬度的

@property(nonatomic) BOOL allowsDefaultTighteningForTruncation NS_AVAILABLE_IOS(9_0); // 默認是NO

注意:

當自動布局的時候約束這個label的時候這個屬性會起作用

在自動布局添加約束中,若文本超過了指定的最大寬度的時候?文本會另起一行?從而增加了label的高度

七辛萍、UILabel的圖和定位覆蓋方法

1-->計算UILabel隨字體多行后的高度

CGRect bounds = CGRectMake(0, 0, 200, 300);

heightLabel = [myLabel textRectForBounds:bounds

limitedToNumberOfLines:20]; //計算20行后的Label的Frame

- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines;

2-->描邊label

- (void)drawTextInRect:(CGRect)rect {

CGSizeshadowOffset =self.shadowOffset;

UIColor*textColor =self.textColor;

?CGContextRef c = UIGraphicsGetCurrentContext(); CGContextSetLineWidth(c,self.outlineWidth);

?CGContextSetLineJoin(c, kCGLineJoinRound);?

CGContextSetTextDrawingMode(c, kCGTextStroke);

self.textColor=self.outlineColor;?

[superdrawTextInRect:rect];

?CGContextSetTextDrawingMode(c, kCGTextFill);

self.textColor= textColor;

self.shadowOffset= CGSizeMake(0,0);?

[superdrawTextInRect:rect];

self.shadowOffset= shadowOffset;

}

- (void)drawTextInRect:(CGRect)rect;

八悯姊、UILabel的auto layou屬性

1-->設置了auto layou的適配寬度

label.preferredMaxLayoutWidth =label.frame.size.width;

iOS6開始 UILabel下面需要設置preferredMaxLayoutWidth ,設置了autolayout和numberofline的UIlabel才顯示多行

九、UILabel的邊框圓角屬性

1-->borderWidth設置邊框?qū)挾?/p>

label.layer.borderWidth=2贩毕;

2-->borderColor設置邊框顏色

label.layer.borderColor=[UIColor blueColor].CGColor

3-->設置圓角顏色

label.backgroundColor=[UIColor blueColor];悯许;

4-->設置圓角半徑

label.layer.cornerRadius =5;

十、UILabel的邊框圓角拓展

第一種方法:通過設置layer的屬性

最簡單的一種,但是很影響性能,一般在正常的開發(fā)中使用很少.

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100,100,100,100)];

//只需要設置layer層的兩個屬性

//設置圓角

imageView.layer.cornerRadius = imageView.frame.size.width /2;

//將多余的部分切掉

imageView.layer.masksToBounds =YES;

[self.view addSubview:imageView];


第二種方法:使用貝塞爾曲線UIBezierPath和Core Graphics框架畫出一個圓角

UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100,100,100,100)];

imageView.image= [UIImage imageNamed:@"1"];//開始對imageView進行畫圖UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO,1.0);//使用貝塞爾曲線畫出一個圓形圖[[UIBezierPath bezierPathWithRoundedRect:imageView.bounds cornerRadius:imageView.frame.size.width] addClip];

[imageView drawRect:imageView.bounds];

imageView.image=UIGraphicsGetImageFromCurrentImageContext();//結(jié)束畫圖UIGraphicsEndImageContext();

[self.view addSubview:imageView];


第三種方法:使用CAShapeLayer和UIBezierPath設置圓角

首先需要導入<AVFoundation/AVFoundation.h>

UIImageView*imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100,100,100,100)];

imageView.image= [UIImage imageNamed:@"1"];

UIBezierPath*maskPath =[UIBezierPath bezierPathWithRoundedRect:imageView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:imageView.bounds.size];

CAShapeLayer*maskLayer =[[CAShapeLayer alloc]init];

//設置大小

maskLayer.frame =imageView.bounds;

//設置圖形樣子

maskLayer.path =maskPath.CGPath;

imageView.layer.mask=maskLayer;

[self.view addSubview:imageView];


這三種方法中第三種最好辉阶,對內(nèi)存的消耗最少啊先壕,而且渲染快速瘩扼。

出處:http://www.reibang.com/p/f091fe0d06ed

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市垃僚,隨后出現(xiàn)的幾起案子集绰,更是在濱河造成了極大的恐慌,老刑警劉巖谆棺,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栽燕,死亡現(xiàn)場離奇詭異,居然都是意外死亡改淑,警方通過查閱死者的電腦和手機碍岔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朵夏,“玉大人付秕,你說我怎么就攤上這事∈坦” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵掠河,是天一觀的道長亮元。 經(jīng)常有香客問我,道長唠摹,這世上最難降的妖魔是什么爆捞? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮勾拉,結(jié)果婚禮上煮甥,老公的妹妹穿的比我還像新娘。我一直安慰自己藕赞,他們只是感情好成肘,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斧蜕,像睡著了一般双霍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上批销,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天洒闸,我揣著相機與錄音,去河邊找鬼均芽。 笑死丘逸,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的掀宋。 我是一名探鬼主播深纲,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼仲锄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了囤萤?” 一聲冷哼從身側(cè)響起昼窗,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涛舍,沒想到半個月后澄惊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡富雅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年掸驱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没佑。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡毕贼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛤奢,到底是詐尸還是另有隱情鬼癣,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布啤贩,位于F島的核電站待秃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏痹屹。R本人自食惡果不足惜章郁,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望志衍。 院中可真熱鬧暖庄,春花似錦、人聲如沸楼肪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淹辞。三九已至医舆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間象缀,已是汗流浹背蔬将。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留央星,地道東北人霞怀。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像莉给,于是被迫代替她去往敵國和親毙石。 傳聞我的和親對象是個殘疾皇子廉沮,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • UILabel是一個常用的控件,它的屬性設置的方法在純代碼中經(jīng)常使用徐矩。在storyboard中滞时,使用UILabel...
    坤哥lqk閱讀 848評論 0 2
  • 對于UILabel其實我覺得并沒有太多的要素需要仔細去弄明白的,因為至今為止滤灯,我所了解到的label屬性不外乎就是...
    懶惰的習慣閱讀 569評論 0 0
  • 不知道有多少人聽過這樣的傳聞: 據(jù)說坪稽,在某些學校門口,有一些豪車的車頂會放著一瓶或兩瓶飲料鳞骤。如果有人上去拿瓶子就意...
    朱三萌閱讀 605評論 6 24
  • 什么是市場營銷窒百?其基本目的是什么? 以前理解的市場營銷是商品和顧客的關系豫尽,是推銷的這個過程篙梢。今天看到他的準確定義不...
    向應昌閱讀 1,319評論 1 3
  • 老爹是20多年的老煙民了。 都說夫妻之間互補是最和諧的美旧,作為家里兩位大寶貝的婚姻見證者和副產(chǎn)品渤滞,我深以為然。 老爹...
    16118f1f5e2c閱讀 323評論 8 9