参考链接: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),要不就是没有进行调整。反正是有个机制没有被触发,或者返回错误。
所以,你可以设置一个大一点的值,让系统知道这个值明显不适合,然后进行重新计算和调整。