IOS UILabel的公共屬性及拓展屬性
前言
在IOS開發的過程中,UILabel是很常用的一個控制元件,同時也是大量使用的一個控制元件。建立一個UILabel一般需要五六句程式碼,如果我們需要建立幾十個UILabel,就意味著我們要寫五六十句程式碼,其實很多程式碼是重複的,我們可以把類似的程式碼寫到一個公共的方法中,以提高工作效率和降低程式碼重複。官方提供UILabel的一些屬性有很大的侷限性,有些在專案中開發中需要用到的一些拓展性的屬性,根據個人經驗,也順便一起總結在這裡。
一、建立UILabel公共的方法
1、標頭檔案中宣告方法如下:
+ (UILabel *)commonLabelWithFrame:(CGRect)frame text:(NSString*)text color:(UIColor*)color font:(UIFont*)font textAlignment:(NSTextAlignment)textAlignment;
2、原始檔中實現該方法:
+ (UILabel *)commonLabelWithFrame:(CGRect)frame text:(NSString*)text color:(UIColor*)color font:(UIFont*)font textAlignment:(NSTextAlignment)textAlignment { UILabel *label = [[UILabel alloc] initWithFrame:frame]; label.text = text; label.textColor = color; label.font = font; label.textAlignment = textAlignment; label.backgroundColor = [UIColor clearColor]; return label; }
二、動態設定UILabel高度
1、標頭檔案申明方法如下:
/** * 建立一個動態高度的UILabel * * @param pointX Label的橫座標 * @param pointY Label的縱座標 * @param width Label的寬度 * @param strContent 內容 * @param color 字型顏色 * @param font 字型大小 * @param textAlignmeng 對齊方式 * * @return 返回一個UILabel */ + (UILabel *)dynamicHeightLabelWithPointX:(CGFloat)pointX pointY:(CGFloat)pointY width:(CGFloat)width strContent:(NSString *)strContent color:(UIColor *)color font:(UIFont *)font textAlignmeng:(NSTextAlignment)textAlignmeng;
2、原始檔中實現該方法:
//動態設定Label的高度
+ (UILabel *)dynamicHeightLabelWithPointX:(CGFloat)pointX
pointY:(CGFloat)pointY
width:(CGFloat)width
strContent:(NSString *)strContent
color:(UIColor *)color
font:(UIFont *)font
textAlignmeng:(NSTextAlignment)textAlignmeng
{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
NSDictionary *attributes = @{NSFontAttributeName:font,
NSParagraphStyleAttributeName:paragraphStyle.copy};
CGSize labelSize = [strContent boundingRectWithSize:CGSizeMake(width,MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attributes
context:nil].size;
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(pointX, pointY, width, labelSize.height)];
[myLabel setNumberOfLines:0];
myLabel.text = strContent;
myLabel.font = font;
myLabel.textColor = color;
return myLabel;
}
3、測試結果:
- (void)viewDidLoad {
[super viewDidLoad];
NSString *str = @"6月初,華潤華髮聯合體以87.95億元拿下上海閘北地塊,地塊樓面價38061元/平方米,重新整理了其自身於3月創下的上海總價“地王”紀錄。同日,招商平安聯合體則以高達2.3萬元/平方米的樓面價,競得寶山大場鎮地塊,創出近90%的高溢價率。不僅是一線市場,杭州、蘇州等二線市場也在6月初集中推地。杭州西溪溼地旁低密度住宅地塊樓面價9975元/平方米,溢價率33%,成為2014年春節以來杭州溢價率最高的住宅用地。";
UILabel *label = [LTLabel dynamicHeightLabelWithPointX:5 pointY:20 width:self.view.frame.size.width-10 strContent:str color:[UIColor blackColor] font:[UIFont systemFontOfSize:20.0] textAlignmeng:NSTextAlignmentLeft];
label.backgroundColor = [UIColor groupTableViewBackgroundColor];
[self.view addSubview:label];
}
(1)字型大小為15號,與邊距間隔為5,測試結果如下:
(2)字型大小為20號,於邊距間隔為5,測試結果如下:
(3)字型大小為20號,於邊距間隔為50,測試結果如下:
(4)字型大小為20號,於邊距間隔為5,增加文字內容,測試結果如下:
三、設定UILabel的對齊方式
對於官方已經提供UILabel的一些對齊方式,在這裡就不做說明了,這裡主要補充官方沒有提供的對齊方式。主要提供了三種常用的對齊方式:垂直頂端對齊、頂端居中對齊、頂端靠右對齊。
1、標頭檔案申明方法如下:
@interface DpLabel : UILabel
typedef enum{
VerticalAlignmentTop = 0, //default 垂直頂端對齊
VerticalAlignmentMidele, //頂端居中對齊
VerticalAlignmentBottom, //頂端靠右對齊
}VerticalAlignment;
@property (nonatomic, assign) VerticalAlignment verticalAlignment;
2、原始檔實現該方法:
#import "DpLabel.h"
@implementation DpLabel
@synthesize verticalAlignment;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
verticalAlignment = VerticalAlignmentTop;
}
return self;
}
- (VerticalAlignment)verticalAlignment
{
return verticalAlignment;
}
- (void)setVerticalAlignment:(VerticalAlignment)align
{
verticalAlignment = align;
[self setNeedsDisplay];
}
- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines
{
CGRect rc = [super textRectForBounds:bounds limitedToNumberOfLines:numberOfLines];
switch (verticalAlignment) {
case VerticalAlignmentTop:
rc.origin.y = bounds.origin.y;
break;
case VerticalAlignmentBottom:
rc.origin.y = bounds.origin.y + bounds.size.height - rc.size.height;
break;
default:
rc.origin.y = bounds.origin.y + (bounds.size.height - rc.size.height)/2;
break;
}
return rc;
}
- (void)drawTextInRect:(CGRect)rect
{
CGRect rc = [self textRectForBounds:rect limitedToNumberOfLines:self.numberOfLines];
[super drawTextInRect:rc];
}
//調整文字中的行距的方法
/*使用方法
*
*text引數 :文字內容
*
*height引數:行距
*
*name 引數:你使用的 UIlable 物件
*/
- (void) getlable_height :(NSString *) text uiheight:(NSInteger) height uilable:(UILabel*) name
{
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:height];//調整行間距
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [text length])];
name.attributedText = attributedString;
}
@end
3、測試結果
<span style="font-size:18px;">- (void)viewDidLoad {
[super viewDidLoad];
DpLabel *label = [[DpLabel alloc] initWithFrame:CGRectMake(20, 120, self.view.frame.size.width-40, 50)];
label.text = @"測試對齊方式";
label.textAlignment = VerticalAlignmentTop;
label.backgroundColor = [UIColor redColor];
[self.view addSubview:label];
}</span>
(1)測試垂直頂端對齊方式,測試結果如下:
(2)測試頂端居中對齊方式,測試結果如下:
(3)測試頂端靠右對齊方式,測試結果如下:
資源下載地址:http://download.csdn.net/detail/u010545480/8808451
相關推薦
iOS開發UILabel的公共屬性及拓展屬性
分享 十個 con copy atomic tin 方法 lba mode 在IOS開發的過程中,UILabel是很常用的一個控件,同時也是大量使用的一個控件。創建一個UILabel一般需要五六句代碼,如果我們需要創建幾十個UILabel,就意味著我們要寫五六十句代碼,其實
IOS UILabel的公共屬性及拓展屬性
前言 在IOS開發的過程中,UILabel是很常用的一個控制元件,同時也是大量使用的一個控制元件。建立一個UILabel一般需要五六句程式碼,如果我們需要建立幾十個UILabel,就意味著我們要寫五六十句程式碼,其實很多程式碼是重複的,我們可以把類似的程式
CSS Note 1.7 table屬性及列表屬性
一、html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <
python中的property屬性及魔法屬性
property屬性 通過以下程式碼來認識一下property class Foo: def func(self): pass # 定義property屬性 @property def prop(self
Page.IsPostBack 屬性及AutoPostBack 屬性
現在從對ASP.NET頁面的執行順序開始,體會一下B/S結構的程式的特點,下圖是ASP.NET頁面的執行順序說明: Page_Init(頁面初始化引發的事件)——>Page_Load(載入頁面時引發的事件)——>Control Event(伺服器控制元件引發的事件)——>Page_U
iOS常用UI控制元件屬性及簡單動畫
-通過center修改位置 -center是CGPoint型別,是view正中間的點 -通過frame修改大小 通過frame修改大小時左上角原點不動 -通過bounds修改大小
iOS之UILabel字型加粗等屬性和特效
UILabel垂直居上對齊[label sizeToFit]; //設定文字過長時的顯示格式 label.lineBreakMode = UILineBreakModeWordWrap; typedefenum { UILineBreakM
Meta標簽中的format-detection屬性及含義
format 數字 str strong 點擊 開啟 轉化 翻譯 pan format-detection翻譯成中文的意思是“格式檢測”,顧名思義, 它是用來檢測html裏的一些格式的,那關於meta的format-detection屬性主要是有以下幾個設置: met
ArcGIS 網絡分析[4] 網絡數據集深入淺出之連通性、網絡數據集的屬性及轉彎要素
我只 三方 功能 如何使用 網絡數據 block 性問題 網絡 屬性 前面介紹完了如何創建網絡數據集、如何使用網絡分析功能,當然還有的讀者會迷惑於一些更深層次的問題,比如網絡數據集的連通性問題等。 因為不可能面面俱到,我只能挑重點來闡述,我覺得網絡數據集的連通性、屬性和轉
bootstrap柵格系統的屬性及使用
boot trap max-width ref err 媒體 idt ide class 柵格系統 媒體查詢 在柵格系統中,我們在 Less 文件中使用以下媒體查詢(media query)來創建關鍵的分界點閾值。 小屏幕(平板,大於等於 768px) @media
javascript字符串屬性及常用方法總結
ring 方法總結 search lower 指定 you 數組 參數 world length屬性:str.length; 常用方法: 1. str.charAt(n) 查找字符串中的第n個字符,如果不在0~str.length-1之間,則返回一個空字符串 2 .st
學習筆記:Linux 文件和目錄屬性及權限
學習筆記:linux 文件和目錄屬性及權限1 . Linux 中的文件1.1 文件屬性概述 在linux裡面一切皆文件!! Linux 系統中的文件或目錄的屬性主要包括:索引節點(inode)、文件類型、權限屬性、鏈接數、所歸屬的用戶和用戶組、最近修改時間等內容: 下面我們看一下執行ls- lhi的結果:[[
背景圖background的例子分析及相關屬性
完全 attach 輸入 定位 以及 p s ... microsoft center 今天需要做一個占滿設備寬度的輪播圖,這裏作為demo僅展示一張圖,下面分別是要操作的圖片(這裏做了縮放處理,實際的圖比較大),以及要實現的效果圖,很明顯兩者是不成比例的: (
JavaScript裏的Date 對象屬性及對象方法--實現簡單的日歷
tor 個數 lin all date rip rec 說明 進行 上網搜索"js 日歷插件"就會出來各種效果的功能豐富的日歷插件,很多都可以下載源碼,然後根據各自的需求對源碼進行修改就可以直接用了. 但今天講的不是如何使用這些插件,而是講如何實現一個很簡單的只有當前這
CSS3常用屬性及用法
rip watch code java ash nbsp chrom tran 替代 1.transition: 過渡屬性,可以替代flash和javascript的效果 兼容性:Internet Explorer 9 以及更早的版本,不支持 transition 屬性。
HTML5基礎知識匯總_(2)自己定義屬性及表單新特性
一行 當前 down js日期 日期 mark 定義 ++ bing 自己定義屬性data-* 說起這個屬性,事實上如今非經常見了;怎麽說呢,由於在一些框架都能看到他的身影!!! 比方Jquery mobile,裏面非常頻繁的使用了這個屬性; 這個
spring-boot實戰【05】:Spring Boo多環境配置及配置屬性註入到對象
num java red component 配置 cati 定義 fin row 項目工程結構: 配置文件application.properties文件 com.yucong.blog.name=yucong com.yucong.blog.title=Spring
CSS3景深、三維變換屬性及旋轉三維立方體的實現
場景 htc 學歷 ati light range frame 焦距 說道 瀏覽器坐標系 在講正式語法之前,首先需要了解瀏覽器坐標系 這需要我們把瀏覽器界面想象成一個立體的場景 這是網上流傳很廣的瀏覽器坐標系圖片 從左到右的方向是瀏覽器x軸的正方向 從上到下的方向是瀏覽器
知識總結之form表單屬性及H5新增特性
bsp ron mit 驗證 pick -s value 地址欄 屬性 一、form的幾大屬性 1.method屬性 規定用於發送 form-data 的 HTTP 方法,即請求的方式;主要用來提交參數與後臺數據進行交互。 分為GET和POST兩種方式,
比較兩個對象屬性及屬性值
bject ace ive args main authorize code pre cer import java.lang.reflect.Method; private static Object getFieldValue(Object thisClass, St