“ Double”不能转换为“ CGFloat?”

时间:2019-12-27 00:15:34

标签: swift cgfloat

我的Xcode一直给我一个Double不能转换为CGFloat错误。问题是,每当我更改代码时,错误就会继续发生。最初是在这条线上: Text("left") .frame(width: 100.0, height: 100.0, alignment: .center),现在我将高度设置为100.0,它位于底部:TextField("example", text: "PLACEHOLDER") .frame(width: 300.0, height: 300.0, alignment: .center)的高度。

在Apple开发人员网站上,它以swiftUI为例: .frame(width: 200, height: 200, alignment: .topLeading) 我尝试删除小数,但我得到一个Int不能转换为CGFloat。 有一次我试图将CGFloat()放在每个位置,然后得到一个“ CGFloat不能转换为CGFloat吗?”。错误

感谢您的任何帮助,谢谢

import Cocoa
import SwiftUI

HSplitView{
    VStack{
        Text("left")
            .frame(width: 100.0, height: 100.0, alignment: .center)
        Text("left bottom")
            .frame(width: 100.0, height: 100.0, alignment: .center)
        Text("leftbottombottom")
            .frame(width: 100.0, height: 100.0, alignment: .center)
    }
    TextField("example", text: "PLACEHOLDER")
        .frame(width: 300.0, height: 300.0, alignment: .center)
}

2 个答案:

答案 0 :(得分:1)

SwiftUI有时会报告错误错误,例如此处。您的问题是TextField("example", text: "PLACEHOLDER")中存在类型错误。第二个参数应该是绑定,而不是字符串。这有效:

import Cocoa
import SwiftUI

struct MyView: View {
  @State var text = "PLACEHOLDER"

  var body: some View {
    HSplitView{
      VStack{
        Text("left")
          .frame(width: 100.0, height: 100.0, alignment: .center)
        Text("left bottom")
          .frame(width: 100.0, height: 100.0, alignment: .center)
        Text("leftbottombottom")
          .frame(width: 100.0, height: 100.0, alignment: .center)
      }
      TextField("example", text: $text)
        .frame(width: 300.0, height: 300.0, alignment: .center)
    }
  }
}

答案 1 :(得分:0)

尝试将Double投射到CGFloat

import Cocoa
import SwiftUI

HSplitView{
    VStack{
        Text("left")
            .frame(width: CGFloat(100.0), height: CGFloat(100.0), alignment: .center)
        Text("left bottom")
            .frame(width: CGFloat(100.0), height: CGFloat(100.0), alignment: .center)
        Text("leftbottombottom")
            .frame(width: CGFloat(100.0), height: CGFloat(100.0), alignment: .center)
    }
    TextField("example", text: "PLACEHOLDER")
        .frame(width: CGFloat(300.0), height: CGFloat(300.0), alignment: .center)
}

根据类型和语言,您可能必须将一种类型显式转换为另一种类型,而不是期望该语言为您隐式强制使用。