iOS UIlabel sizeToFit失效的问题

一般来说, 当设置好label 的行数以后 使用sizeToFit, label的frame会自动适应内容多少, 然而, 还有一个初学者会经常犯的错误使label 的sizeToFit失效, 在平常的情况下, 我们在初始化label 的时候就会给它一个frame, 那样, 在之后使用sizeToFit, label 就会自适应, 但当你在   layoutSubviews 中, 给label付frame的话, 那么问题就会来了, 因为如文档

// override point. called by layoutIfNeeded automatically. As of iOS 6.0, when constraints-based layout is used the base implementation applies the constraints-based layout, otherwise it does nothing.

每次你给label一个frame的时候, 就会走layoutSubviews 这个方法, 然而你在这里重新给label属性的话, 那么label就会出现如失效一样的事情, 所以如果你打算在这里给空间加属性的话, 在外面改变时候起冲突的。


如题这个问题有多种解决办法, 楼主暂时提供两种:

 1. 在你set属性的时候给label.text, 然后再layoutSubviews里面  1⃣️设置frame 2⃣️然后控制行数numberOfLines = 0 (代表多行) 3⃣️sizeToFit, ok, 你试一下应该, 一切都是按逻辑走的

 2. 不要使用layoutSubviews, 好吧, 这种方法相当于没说, 就是在你的set属性方法里面, 走1的三步, 就ok了


有时候的问题, 只要你搞懂程序的执行顺序, 问题就会迎刃而解的






希望大家多批评, 共同进步, 一个不想被互联网淘汰的程序员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值