實用小技巧(二十五)—— 關于UILabel控件寬高的計算

版本記錄

版本號 時間
V1.0 2017.10.31

前言

在app中,很多時候都需要熟悉一些小技巧讓您事半功倍,提高工作效率,這些小技巧都很小很細。感興趣的可以看看我寫的其他小技巧。
1. 實用小技巧(一):UIScrollView中上下左右滾動方向的判斷
2. 實用小技巧(二):屏幕橫豎屏的判斷和相關邏輯
3.實用小技巧(三):點擊手勢屏蔽子視圖的響應
4.實用小技巧(四):動態的增刪標簽視圖
5.實用小技巧(五):通過相冊或者相機更改圖標
6.實用小技巧(六):打印ios里所有字體
7. 實用小技巧(七):UITableViewCell自適應行高的計算
8. 實用小技巧(八):數字余額顯示的分隔
9.實用小技巧(九):類頭條模糊背景的實現
10.實用小技巧(十):晃動手機換后臺服務器網絡
11.實用小技巧(十一):scrollView及其子類顯示的一些異常處理
12.實用小技巧(十二):頭像圖片縮放以及保存到相冊簡單功能的實現
13.實用小技巧(十三):一種類酷我音樂盒動畫實現
14.實用小技巧(十四):生成跳往applestore指定app的方法
15.實用小技巧(十五):左側向右滑動返回上一級控制器
16.實用小技巧(十六):獲取設備信息
17.實用小技巧(十七):清除緩存目錄
18.實用小技巧(十八):取出gif圖的每一幀
19.實用小技巧(十九):獲取相機和麥克風權限
20.實用小技巧(二十):游客模式的實現
21.實用小技巧(二十一):版本檢測的實現
22.實用小技巧(二十二):鍵盤遮擋問題
23. 實用小技巧(二十三):獲取閃光燈的控制
24. 實用小技巧(二十四):APP頁面開啟跳轉邏輯處理

UILabel控件

UILabel控件很簡單的一個東西,但是做UI的時候我們卻需要非常注意的地方,ios系統不同的字體大小都不一樣,比如說ios8的字體就相對很大,ios11就比ios8字體小,而且字形還有一定的差別。

下面我們隨便來一個UILabel控件,如下圖所示。

下面我們打印出這個UILabel的尺寸。

2017-10-31 22:32:41.686983+0800 JJUILabel[1093:52590] self.tipLabel = <UILabel: 0x7fbf2df088b0; 
frame = (98.5 320.5; 178.5 26.5); 
text = '我是不一樣的煙火'; 
opaque = NO; 
autoresize = RM+BM; 
userInteractionEnabled = NO; 
layer = <_UILabelLayer: 0x604000096940>>

下面我們用Sketch看一下尺寸。

可見UILabel的邊框距離字的邊緣還是有3點距離的。


UILabel尺寸的計算

下面我們就計算下UILabel的尺寸。

1. 單行文本的尺寸計算

下面我們看一下代碼。

    //單行文本
    self.tipLabel.text = @"我是不一樣的煙火";
    self.tipLabel.textColor = [UIColor redColor];
    self.tipLabel.font = [UIFont fontWithName:@"Courier New" size:22.0];
    CGSize size = [self.tipLabel.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:self.tipLabel.font, NSFontAttributeName, nil]];
    NSLog(@"size = %lf -- %lf", size.width, size.height);

下面看輸出結果

2017-10-31 22:45:32.481076+0800 JJUILabel[1310:75048] size = 176.000000 -- 24.921875

2. 多行文本的計算

下面我們看一下多行文本的size尺寸的計算。

//多行文本
self.tipLabel.text = @"我是不一樣的煙火我是不一樣的煙火我是不一樣的煙火我是不一樣的煙火我是不一樣的煙火我是不一樣的煙火我是不一樣的煙火我是不一樣的煙火";
self.tipLabel.textColor = [UIColor redColor];
self.tipLabel.numberOfLines = 0;
self.tipLabel.font = [UIFont fontWithName:@"Courier New" size:22.0];
CGRect rect = [self.tipLabel.text boundingRectWithSize:CGSizeMake(250.0, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.tipLabel.font} context:nil];
NSLog(@"rect = width = %lf -- height = %lf -- x = %lf -- y = %lf", rect.size.width, rect.size.height, rect.origin.x, rect.origin.y);

下面看輸出結果

2017-10-31 23:16:22.488901+0800 JJUILabel[1627:118890] rect = 
width = 242.000000 -- 
height = 149.531250 -- 
x = 0.000000 -- 
y = 0.000000

后記

未完,待續~~~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 首先我想問一個問題,一個人是有被人管教好呢,還是沒有人管教好呢? 那這個問題我想不同的人有不同的答案。有的人說干嘛...
    鳴歌2018閱讀 430評論 0 2
  • 吃 二三盞酒 談談到不了的遠方
    一起共鳴閱讀 303評論 0 5
  • 前面文章說了要一個好的健身效果,好的睡眠至關重要,如果睡眠不好,會影響到我們的日常生活跟精力,對于那些每天健身的人...
    林幾點閱讀 513評論 2 1
  • 染染浩淼閱讀 245評論 0 0
  • 天有不測風云,人有旦夕禍福。 上回說匡二夜讀,被巡游的知縣撞到。干柴烈火,生出伯樂與良駒。匡二一屆布衣,昨日吃糠咽...
    活捉外星人閱讀 345評論 0 1