【问题标题】:'Double' is not convertible to 'CGFloat?''Double' 不能转换为 'CGFloat?'
【发布时间】:2020-04-17 01:36:48
【问题描述】:

我的 Xcode 不断给我一个 Double is not convertible to 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) 在高度处。

在苹果开发网站上,它以 swiftUI 为例: .frame(width: 200, height: 200, alignment: .topLeading) 我尝试删除小数,我得到一个 Int is not convertible to 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)
}

【问题讨论】:

    标签: swift cgfloat


    【解决方案1】:

    尝试将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)
    }
    

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

    【讨论】:

    • 这是我认为正确的答案,但我很确定他说他这样做了,但出现了一些奇怪的错误。听起来好像发生了其他奇怪的事情。
    • 当我复制并粘贴我这次得到的建议代码时:'无法推断出通用参数'C0'在 VStack 的开头
    【解决方案2】:

    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)
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多