ios:文本在 iPhone 5S 及更早版本(4 英寸及更小的设备)上无法正确换行
ios: text does not wrap correctly on iPhone 5S and earlier (4 inch and smaller devices)
我有一个应该环绕的标签。它有 4 个约束(top/bottom 和 leading/trailing - 没有其他约束)。标签在 iPhone 6 即 4.7" 屏幕和 iPhone 6 Plus 即 5.5" 屏幕上正确环绕,但在 4" 英寸或更小屏幕设备的右边缘被切断。请查看屏幕截图下面。
好像它认为可用宽度大于实际设备宽度。有任何想法吗? (抱歉不能 post 图像内联,因为它至少需要 10 次重复)
FWIW:这是标签上的约束(我用伪代码写这些,因为它们是在 IB 中设置的)。
label.top = top margin
label.bottom = bottom margin
label.leading = leading margin
label.trailing = trailing margin
在您的 main_storyboard 中,转到底部面板并单击紧凑尺寸检查器(或其他名称)
并选择了这个
尝试删除所有限制并重新添加它们
我发现了问题所在,这个 label
在 TextCell
类型的单元格中,这就是我在 TextCell
的 layoutSubviews
中所做的方法:
override func layoutSubviews() {
super.layoutSubviews()
// ... snip ...
self.text.preferredMaxLayoutWidth = 375 // This is the offending line
}
将 preferredMaxLayoutWidth
更改为合理的值(例如 CGRectGetWidth(self.label.frame)
)修复它。
请注意,以上是对问题的简化,重点是 当您在 Cocoa Touch 中遇到自尺寸标签问题时,请始终检查 preferredMaxLayoutWidth
被设置为正确的值
这是一个相关问题(为我指出了正确的方向):UILabel not wrapping text correctly sometimes (auto layout)
我有一个应该环绕的标签。它有 4 个约束(top/bottom 和 leading/trailing - 没有其他约束)。标签在 iPhone 6 即 4.7" 屏幕和 iPhone 6 Plus 即 5.5" 屏幕上正确环绕,但在 4" 英寸或更小屏幕设备的右边缘被切断。请查看屏幕截图下面。
好像它认为可用宽度大于实际设备宽度。有任何想法吗? (抱歉不能 post 图像内联,因为它至少需要 10 次重复)
FWIW:这是标签上的约束(我用伪代码写这些,因为它们是在 IB 中设置的)。
label.top = top margin
label.bottom = bottom margin
label.leading = leading margin
label.trailing = trailing margin
在您的 main_storyboard 中,转到底部面板并单击紧凑尺寸检查器(或其他名称) 并选择了这个
尝试删除所有限制并重新添加它们
我发现了问题所在,这个 label
在 TextCell
类型的单元格中,这就是我在 TextCell
的 layoutSubviews
中所做的方法:
override func layoutSubviews() {
super.layoutSubviews()
// ... snip ...
self.text.preferredMaxLayoutWidth = 375 // This is the offending line
}
将 preferredMaxLayoutWidth
更改为合理的值(例如 CGRectGetWidth(self.label.frame)
)修复它。
请注意,以上是对问题的简化,重点是 当您在 Cocoa Touch 中遇到自尺寸标签问题时,请始终检查 preferredMaxLayoutWidth
被设置为正确的值
这是一个相关问题(为我指出了正确的方向):UILabel not wrapping text correctly sometimes (auto layout)