我的视图有一个动态的Text
元素,该元素会根据玩家当前的获胜记录更新其内容。
if player1Streak > 0 || player2Streak > 0 {
HStack {
Text("Winning streak:")
Text(player1Streak > 0 ? "\(player1Streak)" : "\(player2Streak)")
Text(player1Streak > 0 ? "(\(player1Name))" : "(\(player2Name))")
}
}
这是它的外观:
问题是Text
似乎随机伸展。有时它很宽,文本会被截断:
其他时候它会像这样收缩:
我正在模拟器中运行该应用程序。我的代码有问题吗?还是SwiftUI中的错误?
答案 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提交错误报告!