iOS開發之UILabel
作者:于磊
使用UILabel展示靜態的內容是一件很簡單的事情。但是有些時候,我們需要從后臺獲取數據,然后再由UILabel展示,這個時候,UILabel的內容并不是固定的,如果我們給出一個靜態的尺寸,很可能就會造成顯示上的問題。這種情況下,我們可以借助其他的一些手段來處理。
UILabel是iOS開發中常用的一個組件,主要用來顯示內容。
UILabel的主要使用如下:
- /*尺寸*/
- CGRect labelRect = CGRectMake(100, 100, 80, 40);
- /*初始化*/
- UILabel *titleLabel = [[UILabel alloc] initWithFrame:labelRect];
- /*一些屬性的設置*/
- titleLabel.font = [UIFont systemFontOfSize:16.0f];
- titleLabel.textColor = [UIColor blueColor];
- titleLabel.text = @"標題";
- /*將UILabel添加到視圖上*/
- [self.view addSubview:titleLabel];
以上是UILabel的一些基本屬性,另外還有一些文字位置等屬性可以設置。具體的信息可以參看iOS Developer Library中關于UILabel的定義。
利用UILabel展示動態內容
使用UILabel展示靜態的內容是一件很簡單的事情。但是有些時候,我們需要從后臺獲取數據,然后再由UILabel展示,這個時 候,UILabel的內容并不是固定的,如果我們給出一個靜態的尺寸,很可能就會造成顯示上的問題。這種情況下,我們可以借助其他的一些手段來處理。下面 是處理的代碼:
- /*根據label內容來調整label的高度*/
- - (void)resizeLabelByContent:(UILabel *)label
- {
- CGSize maxSize = CGSizeMake(label.width, 999);
- label.numberOfLines = 0;
- NSString *contentStr = label.text;
- UIFont *contentFont = label.font;
- CGRect contentFrame;
- NSString *version = [[UIDevice currentDevice] systemVersion];
- if ([version floatValue] < 7.0) {
- CGSize contentStringSize = [contentStr sizeWithFont:contentFont constrainedToSize:maxSize lineBreakMode:label.lineBreakMode];
- contentFrame = CGRectMake(label.left, label.top, label.width, contentStringSize.height);
- } else {
- NSDictionary *contentDic = [NSDictionary dictionaryWithObjectsAndKeys:contentFont, NSFontAttributeName, nil];
- CGSize contentStrSize = [contentStr boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:contentDic context:nil].size;
- contentFrame = CGRectMake(label.left, label.top, label.width, contentStrSize.height);
- }
- label.frame = contentFrame;
- }
本文鏈接:http://my.oschina.net/yulei1943/blog/293200
責任編輯:chenqingxiang
來源:
oschina