有没有办法可以使用 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 大小扩展到字体大小