求助:Xcode 9.2 Storyboard中UILabel文本无法换行
嘿,我之前在Xcode老版本里也踩过这个UILabel不换行的坑!你已经设置了Lines=0和Line Break=Word Wrap但没效果,大概率是约束或者布局优先级的问题,给你几个排查方向:
检查Label的宽度约束是否明确
如果你的UILabel只设置了垂直/水平居中,却没有限制它的宽度(比如没有给leading、trailing约束到父视图,也没设固定宽度),那Label会尽可能扩展宽度去容纳文本,自然不会触发换行。赶紧给它加上左右约束,或者设置一个合适的固定宽度,让文本超过宽度后自动换行。调整Content Hugging Priority(内容拥抱优先级)
有时候Label的水平方向Content Hugging Priority太低,会被父视图拉伸得太宽。打开Size Inspector,找到Content Hugging Priority里的Horizontal选项,把它调高(比如设为251,默认是250),让Label更倾向于保持自身内容的宽度,而不是被拉伸。排查文本本身的特性
如果你的文本是一串没有空格的长字符(比如连续的英文单词、网址),Word Wrap模式是不会拆分换行的——它只会在空格处换行。这种情况可以把Line Break改成Character Wrap,或者开启Auto Shrink(比如Minimum Font Scale)来适配。清理Xcode缓存试试
老版本Xcode偶尔会有Storyboard缓存导致设置不生效的情况。按下Shift+Command+K清理Build Folder,然后重启Xcode,再预览或者运行项目看看效果。再确认一遍基础设置
虽然你说已经设置了,但还是再检查一遍Attributes Inspector:Lines确实是0(表示自动换行)Line Break选择的是Word Wrap- 有没有意外勾选了
Truncates Tail之类的截断选项?
内容的提问来源于stack exchange,提问作者Brian Ogden

