Swift Label.sizeToFit() 大小适应问题

参考链接:sizeToFit()使用心得_aaa1231722的博客-CSDN博客

问题:

              Label.sizeToFit()

              Label.snp.makeConstraints { make in

                    make.width.equalTo(Label.frame.size.width)

                }

设置了 sizeToFit() 自适应宽度属性,字数过多时仍然显示 :字数...  点点点,可以适当放开宽度的初始值

解决:

 初始值放宽即可:如:

            1.    .init(frame: CGRect(x: 0, y: 0, width: 一个大点的值, height: 高度))

            2. Label.snp.makeConstraints { make in

                          make.width.equalTo(一个大点的值)                                   

                }

原因:

具体原因,文档里说明的很清楚了:

- (void)sizeToFit;                      

// calls sizeThatFits: with current view bounds and changes bounds size.

**调用sizeThatFits:使用当前视图边界并更改边界大小。

那么 sizeThatFits是啥?

- (CGSize)sizeThatFits:(CGSize)size;    

// return 'best' size to fit given size. does not actually resize view. Default is return existing view size

**返回“最佳”尺寸以适合给定尺寸。实际上不会调整视图的大小。默认值是返回现有视图大小

猜想,出现这种问题: sizeToFit()方法从sizeThatFits里面,得到了一个最佳尺寸,然后进行大小调整,没改变大小要不就是最佳尺寸计算的不对(需要宽100,结果返回了99),要不就是没有进行调整。反正是有个机制没有被触发,或者返回错误。

所以,你可以设置一个大一点的值,让系统知道这个值明显不适合,然后进行重新计算和调整。