为什么文本内容会拉伸?

时间:2019-06-17 19:36:29

标签: swift swiftui

我的视图有一个动态的Text元素,该元素会根据玩家当前的获胜记录更新其内容。

if player1Streak > 0 || player2Streak > 0 {
    HStack {
        Text("Winning streak:")
        Text(player1Streak > 0 ? "\(player1Streak)" : "\(player2Streak)")
        Text(player1Streak > 0 ? "(\(player1Name))" : "(\(player2Name))")
    }
}

这是它的外观:

correct size

问题是Text似乎随机伸展。有时它很宽,文本会被截断:

wide

其他时候它会像这样收缩:

shrinked

我正在模拟器中运行该应用程序。我的代码有问题吗?还是SwiftUI中的错误?

1 个答案:

答案 0 :(得分:0)

正如Tamás在评论中指出的那样,这很可能是SwiftUI当前实现中的错误。就是说,我自己遇到了这个问题,并使用了带有条件ZStack的{​​{1}}来达到类似的效果。您上面的代码可以重构为:

maxWidth

我还没有发现这种方法的问题,在解决有条件的if player1Streak > 0 || player2Streak > 0 { HStack { Text("Winning streak:") ZStack { Text("\(player1Streak)").frame(maxWidth: player1Streak > 0 ? .infinity : 0.0) Text("\(player2Streak)").frame(maxWidth: player1Streak > 0 ? 0.0 : .infinity) } ZStack { Text("(\(player1Name))").frame(maxWidth: player1Streak > 0 ? .infinity : 0.0) Text("(\(player2Name))").frame(maxWidth: player1Streak > 0 ? 0.0 : .infinity) } } } 错误之前,它应该作为一种解决方法。同时,您应该在Feedback Assistant提交错误报告!