我相信很多人多遇过 UILabel 怎么没有属性控顶或控制任意位置的属性,这点的确要吐槽一下.
接下来我讲一下正确方法,并且内容变化不会抖动,这才是重点.
上网百度一下, 不是重写 drawRect 方法,就是加 \ n,sizeToFit 去贴顶.但这些都是坑.
先看效果:
解决这个问题的神器就是 UIButton, 上个图片分析一下它的属性先.
image01
从上图正文形圈着的部分,可以看到,这里可以调整控件内容的对齐方式.例如:我想要内容在 "顶部"" 左边 ",就设置成下图这样就可以了.
image02
举个真实应用的例子.例如朋友圈的文字.超出部分就收起以省略号结尾.展开时就显示全部内容,并且内容不会抖动.我上一段图片代码
image03
从上面代码可以看到重点是在于改变 UIButton 的 Frame 和它的 Label 的行数.所以你目标内容最小值的 UIBtton 的高度是多少,然后看一下可以最多显示多少行,默认行数就是你看到的.在展开时 Frame 设置为你计算好的值, 行数设置为 0.这时候实现你的需求都差不多了.
再发一下计算文字高度代码
image04
上图 DefaluatTextHeight 是默认 UIButton 的高度.extendHeight 是 Cell 的高度.先写到这里,慢慢完善.
喜欢点个赞!!!哈哈
来源: http://www.jianshu.com/p/66c8e1f86175