在 SwiftUI 中使用 Text() 换行

Posted

技术标签:

【中文标题】在 SwiftUI 中使用 Text() 换行【英文标题】:Line Break with Text() in SwiftUI 【发布时间】:2019-06-27 20:21:00 【问题描述】:

如果文本太长而无法在一行中显示,如何使用 Text() 进行换行? (类似于 UIKit 中的 lineBreakMode)

如果我输入一个长字符串,它只会在文本的右侧添加“...”。

谢谢!

编辑:我尝试将它与滚动视图结合起来,以便在文本太长时能够滚动,但如果我添加滚动视图,它会忽略 .lineLimit()

代码:

ˋˋˋ

struct Homework: View 

var selectedWeek: String
var week: String = "10.-20."
var content: String = "" //Long string inside here

var body: some View 
    NavigationView 
        ScrollView(isScrollEnabled: true, alwaysBounceHorizontal: false, alwaysBounceVertical: true, showsHorizontalIndicator: false, showsVerticalIndicator: true, content: 
            Text(content)
               .lineLimit(nil)
        )
            .navigationBarTitle(Text(week))
    


ˋˋˋ

【问题讨论】:

您是否在此站点上进行过任何搜索?您可以发布您尝试过的代码吗?一个非常快速的搜索 *[SwiftUI] 多行“出现不少于两个答案,还有一个重复。也许你可以解释为什么他们没有为你工作?(当然,如果这是一个不同的问题,我是提前道歉,但仍然要求你的代码,所以也许我们可以帮助你。) 你可能会得到这个答案的帮助:***.com/a/56604599/30602 【参考方案1】:

lineLimit API 用于当您想要文本中的特定行数时,您只需使用您想要的行数调用此 API。如果不确定要占用多少行,只需在参数中给出 nil 即可。

import SwiftUI
struct ContentView : View 
    @State var demoText = "Start Typing"
    var body: some View 
        VStack 
            TextField($demoText)
            Text(demoText)
                .lineLimit(nil)
        
    

【讨论】:

没有任何额外的代码它可以工作,但是如果我添加一个滚动视图,它就不起作用......对不起。 在这种情况下,文本应该是可滚动的。文本末尾不会显示 ...。 Shaafi Shovon,我无法使用此代码滚动。它在文本末尾显示“...” 如果我将我在此处发布的代码嵌入到 ScrollView 中,则文本标签将变为可水平滚动的。所以我不确定你的代码,可能出了什么问题。 是的,这就是我所说的“它忽略 .lineLimit()”的意思。文本显示在一个可滚动的行中。我用列表暂时解决了这个问题...

以上是关于在 SwiftUI 中使用 Text() 换行的主要内容,如果未能解决你的问题,请参考以下文章

当文本()对于设备的宽度而言太长时,如何在 SwiftUI 中进行换行?

在 ScrollView 中将文本对齐为前导 - SWIFTUI

如何在 SwiftUI 的同一行中使用粗体和普通文本

SwiftUI 表单中的文本在更改后不换行

具有多列的 SwiftUI 列表

如何使用 swiftui 创建表情符号键盘?