实用小技巧(二十五)—— 关于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阅读 421评论 0 2
  • 吃 二三盏酒 谈谈到不了的远方
    一起共鸣阅读 303评论 0 5
  • 前面文章说了要一个好的健身效果,好的睡眠至关重要,如果睡眠不好,会影响到我们的日常生活跟精力,对于那些每天健身的人...
    林几点阅读 509评论 2 1
  • 染染浩淼阅读 245评论 0 0
  • 天有不测风云,人有旦夕祸福。 上回说匡二夜读,被巡游的知县撞到。干柴烈火,生出伯乐与良驹。匡二一届布衣,昨日吃糠咽...
    活捉外星人阅读 345评论 0 1