【问题标题】:SwiftUI Adding Unnecessary "dot dot dot" to Animated TextSwiftUI 向动画文本添加不必要的“dot dot dot”
【发布时间】:2020-03-26 01:57:02
【问题描述】:

我正在使用 XCode 中的 SwiftUI 为 iPhone 编写应用程序。 在其中一个视图中,有一个 Text 标签,只要按下按钮,它就会更改其文本。 整个视图是弹簧动画的,因此每当通过按钮更改文本时,都会通过动画进行更改。 动画效果很好,除了在动画期间文本标签在文本末尾添加了一个不必要的省略号。 我尝试使用以下方法删除省略号:

Text("text")
    .truncationMode(nil)

但是,这会产生错误。 有什么办法可以关闭文本标签中的“...”? 如果没有,有没有办法只为那个 Text 标签关闭动画而不影响其他标签,因为整个视图都是动画的?

【问题讨论】:

  • 你能分享你的代码吗?
  • 试试这个:.lineLimit(nil)

标签: swift xcode text swiftui ellipsis


【解决方案1】:

您可以使用Text("text").animation(nil) 关闭动画。

或者你可以选择其他动画来防止...

Text("text").animation(.spring(response: 0.0, dampingFraction:0.2))

【讨论】:

    【解决方案2】:

    您可以使用minimumScaleFactor(_ factor: CGFloat)。文本将根据因子值缩小。

    例如,如果您的字体大小为 10,而您的因子为 0.4,则文本字体大小可以根据需要减小到 4。

    Text("text")
        .minimumScaleFactor(0.1)
    

    【讨论】:

      【解决方案3】:

      试试这个:

      struct UnAnimatedText: View {
          private let text: String
          init(_ text: String) {
              self.text = text
          }
      
          var body: some View {
              Button(action: {
      
              }) {
                  Text(text)
                      .frame(maxWidth: .infinity)
                      .animation(nil)
              }
              .disabled(true)
          }
      }
      

      文本将在没有动画的情况下发生变化,但 UnAnimatedText 的框架 - 带有动画。

      .frame(maxWidth: .infinity) 是可选的,主要思想是包裹在Button中

      【讨论】:

      • 我已经搜索了很多关于这个异常的信息。这一行:".frame(maxWidth: .infinity)" 仅适用。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      相关资源
      最近更新 更多