Closed EkkoG closed 6 years ago
这是一个好问题,在一些场景中我们希望UILabel在某个固定的宽度下高度能够自适应而换行,所以我们可以按照下面的写法:
labelView.tg_width.equal(100)
labelView.tg_height.equal(.wrap)
而要想让UILabel的高度在某个固定宽度下自适应时就必须将numberOfLines的值设置为0。当时的一个纠结的点是否要在设置高度自适应时将numberOfLines的设置权交给使用方还是库里面自己就处理了:
所以综合考虑,为了易用性还是选择了后者。其实这个问题也还好理解,如果你想要你的高度自适应而且会换行那么你只要设置明确的宽度和为wrap的高度即可,这时候系统会自动换行;而如果你想让你的高度和宽度也同时自适应时,你可以设置宽度和高度都为wrap,这样即使内部设置了numberOfLines为0也不会有换行的处理;而如果你就想让宽度占用剩余的空间,但是高度不换行那么你就不应该设置高度为.wrap,而是应该明确的指定一个高度值。
OK 了解了,不过觉得交给使用方比较直观,有没有设置自己心里清楚,内部修改会导致使用方比较困惑为什么明明没有设置怎么就换行了
https://github.com/youngsoft/TangramKit/blob/74ebd2a287e0edf4887711caacf8b31fda24498e/TangramKit/TGLayoutSize.swift#L574
遇到一个想让一个 UILabel 只是占用剩余空间但是不用换行,才发现 layout 内部修改了 numberOfLines 属性,导致 UILabel 显示多行,想问下这样做是基于什么考虑呢?