有没有办法可以使用 SwiftUI 将文本限制为 2 / 3 行?

Posted

技术标签:

【中文标题】有没有办法可以使用 SwiftUI 将文本限制为 2 / 3 行?【英文标题】:Is there a way that I can limit the text to 2 / 3 lines using SwiftUI? 【发布时间】:2019-06-06 10:33:21 【问题描述】:

我正在尝试使用

var body: some View 
    Text("This is large text. Is there a way that I can unwrap the large text as discussed").lineLimit(2)

仅供参考: 我知道

var body: some View 
    Text("This is large text. Is there a way that I can unwrap the large text as discussed").lineLimit(nil)

它将文本换行成 n 行。

【问题讨论】:

【参考方案1】:

Text 元素上调用.lineLimit(3)。 (从技术上讲,它可以在 any View 上调用,在这种情况下,它将限制该视图中 all Text 元素的行数。)

来自SwiftUI.View

    /// Sets the maximum number of lines that text can occupy in this view.
    ///
    /// The line limit applies to all `Text` instances within this view. For
    /// example, an `HStack` with multiple pieces of text longer than three
    /// lines caps each piece of text to three lines rather than capping the
    /// total number of lines across the `HStack`.
    ///
    /// - Parameter number: The line limit. If `nil`, no line limit applies.
    /// - Returns: A view that limits the number of lines that `Text` instances
    ///   display.
    public func lineLimit(_ number: Int?) -> Self.Modified<_EnvironmentKeyWritingModifier<Int?>>

【讨论】:

【参考方案2】:

因为.linelimit 暂时没有按预期工作,如果您有多个文本(如标题和副标题),您可以简单地将 Text 元素包装在 VStack 中或者您可以将.multilineTextAlignment(.center) 修饰符直接添加到文本元素:

 VStack
        Text("This is large text. Is there a way that I can unwrap the large text as discussed")
        .font(.title3)
        .foregroundColor(.white)
                             
        .padding()
         .multilineTextAlignment(.center)    

                    

【讨论】:

以上是关于有没有办法可以使用 SwiftUI 将文本限制为 2 / 3 行?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 有没有办法创建一个只读的 TextEditor?

有没有办法在编辑时将 TextField 的光标移动到文本的末尾?- SwiftUI

SwiftUI:在输入之前将 TextField 大小扩展到字体大小

有没有办法使用几何阅读器将我的 SwiftUI 图像的宽度定义为相对于屏幕尺寸?

SwiftUI TextField 数字输入

如何始终在 SwiftUI 中显示键盘