UILabel 詳解

UILabel 多行文字自動換行 (自動折行)

1
.UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(10, 100, 300, 180)]; 2. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; 3. label.text = @"where are you? where are you? where are you? where are you? where are you? where are you? where are you? where are you? where are you? where are you?"; 4. //清空背景顏色 5. label.backgroundColor = [UIColor clearColor]; 6. //設置字體顏色為白色 7. label.textColor = [UIColor whiteColor]; 8. //文字居中顯示 9. label.textAlignment = UITextAlignmentCenter; 10. //自動折行設置 11. label.lineBreakMode = UILineBreakModeWordWrap; 12. label.numberOfLines = 0;

?

iOS的UILabel設置居上對齊,居中對齊,居下對齊

在iOS中默認的UILabel中的文字在豎直方向上只能居中對齊,博主參考國外網站,從UILabel繼承了一個新類,實現了居上對齊,居中對齊,居下對齊。具體如下:

[cpp]?view plaincopy
  1. //??
  2. //??myUILabel.h??
  3. //????
  4. //??
  5. //??Created?by?yexiaozi_007?on?3/4/13.??
  6. //??Copyright?(c)?2013?yexiaozi_007.?All?rights?reserved.??
  7. //??
  8. ??
  9. #import?<UIKit/UIKit.h>??
  10. typedef?enum??
  11. {??
  12. ????VerticalAlignmentTop?=?0,?//?default??
  13. ????VerticalAlignmentMiddle,??
  14. ????VerticalAlignmentBottom,??
  15. }?VerticalAlignment;??
  16. @interface?myUILabel?:?UILabel??
  17. {??
  18. @private??
  19. VerticalAlignment?_verticalAlignment;??
  20. }??
  21. ??
  22. @property?(nonatomic)?VerticalAlignment?verticalAlignment;??
  23. ??
  24. @end??

?

[cpp]?view plaincopy
  1. //??
  2. //??myUILabel.m??
  3. //????
  4. //??
  5. //??Created?by?yexiaozi_007?on?3/4/13.??
  6. //??Copyright?(c)?2013?yexiaozi_007.?All?rights?reserved.??
  7. //??
  8. ??
  9. #import?"myUILabel.h"??
  10. ??
  11. @implementation?myUILabel??
  12. @synthesize?verticalAlignment?=?verticalAlignment_;??
  13. ??
  14. -?(id)initWithFrame:(CGRect)frame?{??
  15. ????if?(self?=?[super?initWithFrame:frame])?{??
  16. ????????self.verticalAlignment?=?VerticalAlignmentMiddle;??
  17. ????}??
  18. ????return?self;??
  19. }??
  20. ??
  21. -?(void)setVerticalAlignment:(VerticalAlignment)verticalAlignment?{??
  22. ????verticalAlignment_?=?verticalAlignment;??
  23. ????[self?setNeedsDisplay];??
  24. }??
  25. ??
  26. -?(CGRect)textRectForBounds:(CGRect)bounds?limitedToNumberOfLines:(NSInteger)numberOfLines?{??
  27. ????CGRect?textRect?=?[super?textRectForBounds:bounds?limitedToNumberOfLines:numberOfLines];??
  28. ????switch?(self.verticalAlignment)?{??
  29. ????????case?VerticalAlignmentTop:??
  30. ????????????textRect.origin.y?=?bounds.origin.y;??
  31. ????????????break;??
  32. ????????case?VerticalAlignmentBottom:??
  33. ????????????textRect.origin.y?=?bounds.origin.y?+?bounds.size.height?-?textRect.size.height;??
  34. ????????????break;??
  35. ????????case?VerticalAlignmentMiddle:??
  36. ????????????//?Fall?through.??
  37. ????????default:??
  38. ????????????textRect.origin.y?=?bounds.origin.y?+?(bounds.size.height?-?textRect.size.height)?/?2.0;??
  39. ????}??
  40. ????return?textRect;??
  41. }??
  42. ??
  43. -(void)drawTextInRect:(CGRect)requestedRect?{??
  44. ????CGRect?actualRect?=?[self?textRectForBounds:requestedRect?limitedToNumberOfLines:self.numberOfLines];??
  45. ????[super?drawTextInRect:actualRect];??
  46. }??
  47. ??
  48. ??
  49. @end??

?

在使用時:

?

[cpp]?view plaincopy
    1. lbl_mylabel?=?[[myUILabel?alloc]?initWithFrame:CGRectMake(20,?50,?150,?600)];??
    2. UIColor?*color?=?[UIColor?colorWithPatternImage:[UIImage?imageNamed:@"halfTransparent.png"]];//使用半透明圖片作為label的背景色??
    3. lbl_mylabel.backgroundColor?=?color;??
    4. lbl_mylabel.textAlignment?=?UITextAlignmentLeft;??
    5. lbl_mylabel.textColor?=?UIColor.whiteColor;??
    6. lbl_mylabel.lineBreakMode?=?UILineBreakModeWordWrap;??
    7. lbl_mylabel.numberOfLines?=?0;??
    8. [lbl_mylabel?setVerticalAlignment:VerticalAlignmentTop];??
    9. [self?addSubview:lbl_mylabel];?

?

?

ios UILabel 變量名不能為title

-[UILabel copyWithZone:]: unrecognized selector sent to instance

遇到了這樣一個錯誤,找了半天沒找到是什么錯誤,于是,Google搜索,打開第一個鏈接http://stackoverflow.com/questions/10784207/uilabel-copywithzone-unrecognized-selector-sent-to-instance
UILabel 設置過長文本中間為省略號

?label.lineBreakMode = NSLineBreakByTruncatingMiddle;

參考:iOS組件之UILabel
iOS UILabel詳解
http://blog.csdn.net/zhaopenghhhhhh/article/details/16331041
·UILable是iPhone界面最基本的控件,主要用來顯示文本信息。
·常用屬性和方法有:
1、創建
CGRect rect = CGRectMake(100, 200, 50, 50);
UILabel *label = [[UILabel alloc] initWithFrame:rect];
2、text //設置和讀取文本內容,默認為nil
label.text = @”文本信息”; //設置內容
NSLog(@”%@”, label.text); //讀取內容
3、textColor //設置文字顏色,默認為黑色
lable.textColor = [UIColor redColor];
4、font //設置字體大小,默認17
label.font = [UIFont systemFontOfSize:20]; //?一般方法
label.font = [UIFont boldSystemFontOfSize:20]; //加粗方法
label.font = [UIFont fontWithName:@"Arial" size:16]; //指定
字體的方法
//還有?一種從外部導入字體的方法。
5、textAlignment //設置標簽文本對齊方式。
label.textAlignment = NSTextAlignmentCenter; //還有
NSTextAlignmentLeft、 NSTextAlignmentRight.
6、numberOfLines //標簽最多顯示行數,如果為0則表示多行。
label.numberOfLines = 2;
7、enabled //只是決定了Label的繪制方式,將它設置
為NO將會使文本變暗,表示它沒有激活,這時向它設置顏色值是無效的。
label.enable = NO;
8、highlighted //是否高亮顯示
label.highlighted = YES;
label.highlightedTextColor = [UIColor orangeColor]; //高亮
顯示時的文本顏色
9、ShadowColor //設置陰影顏色 
[label setShadowColor:[UIColor blackColor]];
10、ShadowOffset //設置陰影偏移量
[label setShadowOffset:CGSizeMake(-1, -1)];
11、baselineAdjustment //如果adjustsFontSizeToFitWidth屬性設
置為YES,這個屬性就來控制文本基線的行為。
label.baselineAdjustment = UIBaselineAdjustmentNone;
UIBaselineAdjustmentAlignBaselines = 0,默認,文本最上端與中線對齊。
UIBaselineAdjustmentAlignCenters,  文本中線與label中線對齊。
UIBaselineAdjustmentNone, 文本最低端與label中線對齊。
12、Autoshrink //是否自動收縮
Fixed Font Size 默認,如果Label寬度小于文字長度時時,文字大小不自動縮放
minimumScaleFactor 設置最小收縮比例,如果Label寬度小于文字長度時,文字
進行收縮,收縮超過比例后,停止收縮。
minimumFontSize 設置最小收縮字號,如果Label寬度小于文字長度時,文字字號
減小,低于設定字號后,不再減小。//6.0以后不再使用了。
label.minimumScaleFactor = 0.5;
13、adjustsLetterSpacingToFitWidth //改變字母之間的間距來適應Label大小
myLabel.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 =
[[NSMutableAttributedString alloc]
initWithString:text];
[textLabelStr
setAttributes:@{NSForegroundColorAttributeName :
[UIColor lightGrayColor], NSFontAttributeName :
[UIFont systemFontOfSize: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 = [myLabel 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 = @"獲取到的deviceToken,我們可以通過webservice服務提
交給.net應用程序,這里我簡單處理,直接打印出來,拷貝到.net應用環境中使
用。";
CGSize msgSie = [msgLabel.text sizeWithFont:fonts
constrainedToSize:size];
[msgLabel setFrame:CGRectMake(15, 45, 290, msgSie.height)];20、漸變字體Label
UIColor *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];
[titleLabel release];
21、Label添加邊框
titleLabel.layer.borderColor = [[UIColor grayColor] CGColor];
titleLabel.layer.borderWidth = 2;

?

?

轉載于:https://www.cnblogs.com/ygm900/archive/2013/05/19/3086902.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259749.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259749.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259749.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql創建數據庫指定字符集

mysql 創建 數據庫時指定編碼很重要&#xff0c;很多開發者都使用了默認編碼&#xff0c;但是我使用的經驗來看&#xff0c;制定數據庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。 我們遵循的標準是&#xff0c;數據庫&#xff0c;表&#xff0c;字段和頁面或文本的編碼…

onclick實現超鏈接_給超鏈接加onclick事件

在動態網頁中&#xff0c;常常需要在單擊超鏈接時處理一些數據&#xff0c;而不是跳轉一個網頁。在這種情況下&#xff0c;通常有以下三種處理方式&#xff1a;不設置標簽的href屬性&#xff0c;只設置onclick屬性。在這種處理方式下&#xff0c;通常超鏈接文本會和正文的文本以…

Android 布局以及優化資料匯總

2019獨角獸企業重金招聘Python工程師標準>>> 1.性能優化之布局優化 2.Android 開源庫 V - Layout 轉載于:https://my.oschina.net/zhugenqiang/blog/822942

AS3容易被忽略的一些特性

1.給sprite設置背景色 給sprite設置背景色&#xff0c;spr.opaqueBackground 0xFFCC33, 在尺寸變化的時候自動重繪背景。需要注意的是背景不能接受鼠標事件&#xff0c;接受鼠標事件的話&#xff0c;需要用graphics繪制背景。 2.在ByteArray里writeUTF("中方漢字")&…

每天一個JavaScript實例-canvas繪圖

<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /> <title>每天一個JavaScript實例-canvas繪圖</title> <style>.canvas{width:600px;height:500px;} </s…

mysql字符集排序規則_Mysql 字符集及排序規則

一、字符集字符集&#xff1a;就是用來定義字符在數據庫中的編碼的集合。常見的字符集&#xff1a;utf8、Unicode、GBK、GB2312(支持中文)、ASCCI(不支持中文)二、字符集排序規則作者本人用的是utf8_general_ci后綴ci (case insensitive)意味不區分大小寫(大小寫不敏感)&#x…

驅動06.觸摸屏驅動程序

1.觸摸屏的簡介 觸摸屏是標準的輸入設備&#xff0c;在寫驅動程序時采用的之前講過的輸入子系統那套框架。我們無需關心對設備文件的操作&#xff0c;只需關心對硬件寄存器的操作和上報事件即可。 觸摸屏是附在LCD上的一層薄膜&#xff0c;并不是我們平時認識的觸摸屏&#xff…

編碼文件AndroidStudio初體驗:解決Execution failed for task ':TestAndroid:compileDebug'.

最近研究編碼文件&#xff0c;稍微總結一下&#xff0c;以后繼續補充&#xff1a; Execution failed for task :TestAndroid:compileDebug.有各種各樣原因&#xff0c;具體就請自己進cmd編譯看什么地方出錯 進入項目的gradle文件地點目錄打 gradlew compileDebug --stacktrace來…

我的大二

一不小心就已經大二了&#xff0c;時間真的過的很快&#xff0c;不知不覺和學長大大一起走過了7個多月~我是個很幸運的人&#xff0c;對此我感激所有人&#xff0c;尤其是那些愛我的&#xff0c;以及教會我做人&#xff0c;指引我許多的人們&#xff01; 不得不承認&#xff0c…

2016國產開源軟件Top100(Q1)

2016國產開源軟件Top100(Q1) 隨著互聯網的發展、開放標準的普及和虛擬化技術的應用等諸多IT新領域的創新及拓展&#xff0c;開源技術憑借其開放性、低成本、穩定性、靈活性、安全性和技術創新性等特點迅速走向成熟&#xff0c;逐步發展成為一種主流模式&#xff0c;日益改變著全…

mysql lenenc int_MySQL-NonMySQL同步工具源碼解讀——確定同步位置

經過上一節的鑒權過后&#xff0c;程序已經受主庫認可&#xff0c;并且可以像主庫發起同步請求。在發起請求之前&#xff0c;還有一個可選的步驟&#xff1a;確認同步時間點。同步時間點由兩個屬性進行標識&#xff1a;Binlog文件名、偏移量。工具支持自定義時間點&#xff0c;…

DancingLinks刷題集

HDU 3663 Power Stations 精確覆蓋 題意&#xff1a;每個城市i有xi->yi天可以成為發射站&#xff0c;發射站覆蓋范圍為與該站有一條邊鏈接的城市。 同時&#xff0c;每個每天城市必須且只能被一個發射站覆蓋 天數D<5。 每個城市的發射站關閉后就不再開啟。即只能選擇一段…

【web前端優化】前端無優化,庸人自擾之!

前言 我發現一個人厲害不只是他厲害&#xff0c;他的名字也一定要跟著厲害才行&#xff0c;比如我刀狂劍癡葉小釵了&#xff0c;若是老夫叫做刀狂劍癡葉小草&#xff0c;估計就缺少氣勢了&#xff01;&#xff01;&#xff01; 又如百世經綸一頁書&#xff0c;如果叫做百世經綸…

react源碼解讀 {createClass}

對一個框架源碼的解讀&#xff0c;既有利于更深入地了解框架&#xff0c;使用上更得心應手&#xff0c;又可以學習到其中代碼組織的思路&#xff0c;吸收其精華簡潔的寫法以便于日常工作上使用。下面我就挑選近年大熱門react&#xff08;15.3.1&#xff09;&#xff0c;從中剖析…

mysql分析sql語句性能_sql語句執行性能分析

explain根據上面提到的explain去比較&#xff0c;就可以得出結果了mysql> explain select * from users limit 1000,20;---------------------------------------------------------------------------------| id | select_type | table | type | possible_keys | key | key…

sourceTree添加git密鑰步驟

給多個遠程服務器比如https://github.com/wangjian2014/wjtest/blob/master/wj.txt添加public密鑰 本地服務器添加private密鑰 SSH Client 選擇PuTTY/Plink 選擇Generate&#xff0c;生成public 和private密鑰&#xff0c;將public密鑰數據復制到遠程服務器上面 保存private…

[tomcat] 配置數據源介紹

從tomcat5.5開始,內置了DBCP數據源的實現。tomcat數據源提供兩種配置方式,兩種數據源的訪問范圍不同&#xff0c; 1.全局數據源:顧名思義在tomcat應用下的所有web都可以訪問。 2.局部數據源&#xff1a;適用單個web應用 ★★ 不管以那種方式都得提供特定數據源的jdbc驅動。 此…

background-size

background-size:contain;contain:包含 按比例調整圖片&#xff0c;使得圖片的寬度自適應容器的寬度。 相當于在ps中&#xff0c;約束比例設置原始圖片的寬度值等于容器的寬度值。 如果圖片過大&#xff0c;等比壓縮后容器的高度方向上可能會有空白。 background-size:cover;co…

在mybatis用mysql的代碼塊_關于Mybatis 中使用Mysql存儲過程的方法

1.存儲過程的簡介我們常用的操作數據庫語言SQL語句在執行的時候需要要先編譯&#xff0c;然后執行&#xff0c;而存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集&#xff0c;經編譯后存儲在數據庫中&#xff0c;用戶通過指定存儲過程的名字并給定參數(如果該存儲…

MySQL5.6免安裝配置與“系統找不到指定的文件”錯誤

1.下載免安裝版本的mysql-5.6.11-winx64 (本機 win7 64位)2.將文件解壓到任意&#xff0c;不要有中文&#xff08;有中文的情況沒試過&#xff0c;不過最好避免這種情況&#xff09;3.配置mysql 環境變量&#xff0c;在 path后面加上D:\Program Files\mysql-5.6.11-winx64\bin…