文本视图的 lineBreakMode 是不是有 SwiftUI 等效项?
Posted
技术标签:
【中文标题】文本视图的 lineBreakMode 是不是有 SwiftUI 等效项?【英文标题】:Is there a SwiftUI equivalent for lineBreakMode for Text views?文本视图的 lineBreakMode 是否有 SwiftUI 等效项? 【发布时间】:2019-09-15 14:37:27 【问题描述】:我有一个文本视图,我想将它配置为包裹第一个不适合的字符。在 UIKit 中,这相当于设置 label.lineBreakMode = .byCharWrapping
。这已经为 SwiftUI Text 实现了吗?我在documentation for Text 中找不到任何内容。
我想这样做的原因是我要向用户显示一个长代码,所以最好用字符而不是单词来换行。
【问题讨论】:
【参考方案1】:不确定这是否有帮助,但我正在使用以下内容,这会导致长词被字符包裹:
Text("Supercallifragilisticexpialidocious")
.font(.system(size: 100))
.minimumScaleFactor(0.01)
.lineLimit(3)
.multilineTextAlignment(.leading)
不幸的是,对于我的用例,我不希望文本按字符换行。如果我设置 lineLimit(1) 可以正常工作并且减小字体大小以将文本保持在 1 行。但是,如果 Text 是多个单词,例如 Text("Practically perfect in every way") 那么我希望字符串由单词包裹。我似乎无法同时获得多个单词的自动换行和长单词的字体缩放。
【讨论】:
我遇到了一个问题,如果使用 lineLimit(1),如果设备旋转,文本将变为最小尺寸。如果您更新文本,则它会扩展回正确的全尺寸。为了解决这个问题,如果你将 Text 包装在一个不做任何事情的 GeometryReader 中,就可以解决这个问题。以上是关于文本视图的 lineBreakMode 是不是有 SwiftUI 等效项?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 7 中使用 drawInRect:withAttributes: 而不是 drawAtPoint:forWidth:withFont:fontSize:lineBreakMode:ba