SwiftUI:文本字段被切断

时间:2019-11-05 14:03:22

标签: swiftui

SwiftUI应用程序上的textField已被切断。但这并非每次都会发生。它似乎是随机发生的。

Screenshot of app showing text getting cut off

这是我正在使用的代码:

var body: some View {
    VStack {
      Spacer()
      // Target row
      HStack {
        Text("Put the bullseye as close as you can to:")
        Text("\(target)")
      }
      Spacer()
      // Slider row
      HStack {
        Text("1")
        Slider(value: $sliderValue, in: 1...100) {_ in
          print(self.sliderValue)
        }
        Text("100")
      }
      Spacer()
      // Hit me button row
      Button(action: {
        print("Button pressed")
        self.alertIsVisible = true
      }) {
        Text(/*@START_MENU_TOKEN@*/"Hit Me!"/*@END_MENU_TOKEN@*/)

      }
      .alert(isPresented: $alertIsVisible) { () -> Alert in
        let roundedValue = Int(sliderValue.rounded())
        let score = pointsForCurrentRound()
        return Alert(title: Text("Hello there!"), message: Text("The slider's value is \(roundedValue)!\n" +
          "You scored \(score) points this round"
          ), dismissButton: .default(Text("Awesome")))
      }
      Spacer()
      // Score and start over button row
      HStack {
        Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) {
          Text("Start Over")
        }
        Spacer()
        Text("Score:")
        Text("999999")
        Spacer()
        Text("Round:")
        Text("999")
        Spacer()
        Button(action: /*@START_MENU_TOKEN@*/{}/*@END_MENU_TOKEN@*/) {
          Text("Info")
        }
      }
      .padding(.bottom, 20)
    }
  }

我尝试在文本字段之后和目标之前添加填充。我尝试将填充添加到目标的前沿。我尝试在文本字段上使用frame方法添加最小长度。这些都不起作用。有什么想法吗?

谢谢

2 个答案:

答案 0 :(得分:5)

我刚遇到了这种情况!经过一会儿的搜索,试用和错误,我终于弄清楚了。文本视图正在尝试调整大小,并且其中一个父视图启用了动画。如果遇到相同问题的任何人在文本中添加.animation(nil),则可能会解决该问题。

VStack {
    Text("\(Int(self.viewModel.ProgressPercentage * 100.0))%")
        .font(.largeTitle)
        .animation(nil)
}

祝你好运!

答案 1 :(得分:2)

您可以添加fixedSize()来锁定标签。

HStack {
  Text("Put the bullseye as close as you can to:").fixedSize()
  Text("\(target)").fixedSize()
}