Xcode 11 的问题 - “INT 不能转换为 CGFloat?”
Posted
技术标签:
【中文标题】Xcode 11 的问题 - “INT 不能转换为 CGFloat?”【英文标题】:Issues with Xcode 11 - "INT is not convertible to CGFloat?" 【发布时间】:2019-11-01 05:56:21 【问题描述】:请在下面查看我的代码。我已经尝试了一些东西,但似乎没有任何帮助。我注意到的一件事是,如果我注释掉第 28 行,代码可以正常工作,但如果我保持第 28 行不变,我会不断收到错误消息。
我试过改成:
HStack(alignment:.center, spacing: CGFloat(50))
但这也没有奏效。请帮忙 提前感谢您抽出宝贵时间对此进行调查。
//
// ContentView.swift
// UdemyCourse
//
// Created by Karan Singh on 10/29/19.
// Copyright © 2019 Karan Singh. All rights reserved.
//
import SwiftUI
struct ContentView: View
@State var text: String = ""
var body: some View
VStack
HStack(alignment:.center, spacing: CGFloat(50))
Image("Karan").resizable().frame(width: 100, height: 120, alignment: .center)
VStack
Text(verbatim: "Karan Singh").font(.title).foregroundColor(.black).bold()
Text(verbatim: "Customer Success")
Divider()
TextField($text, placeholder: Text(verbatim: "Enter Text"))
ButtonView(title: "Login", clickAction:
print("Click to Login")
)
//struct ContentView_Previews: PreviewProvider
// static var previews: some View
// ContentView()
//
//
【问题讨论】:
【参考方案1】:您应该注意 Xcode 会在错误的地方抱怨错误,因此您得到的错误可能与实际错误无关。
查看您的代码似乎有几个错误。除非您为 TextField
和 ButtonView
编写了自己的组件(如果您这样做了,则应该将其包含在代码示例中),否则错误似乎与它们有关。
首先是TextField
,它以最简单的形式采用以下参数:
TextField(<title: StringProtocol>, text: Binding<String>)
这与您所写的不同(我也找不到与您提供的重载匹配的TextField
)。所以你应该将你的TextField
更新为:
TextField("Enter text", text: $text)
其次,没有名为ButtonView
的组件,所以我假设您打算使用Button
。它的参数是:
Button(action: () -> Void, label: () -> _)
所以你应该将你的Button
更新为:
Button(action:
print("Click to login")
)
Text(verbatim: "Login")
如果我们把它们放在一起(将图像换成一个名为 image 的系统,因为我没有你的照片),我们会得到以下内容,编译时不会出错:
struct ContentView: View
@State var text: String = ""
var body: some View
VStack
HStack(alignment: VerticalAlignment.center, spacing: 50)
Image(systemName: "person.fill")
.resizable()
.frame(width: 100, height: 100, alignment: .center)
VStack
Text(verbatim: "Karan Singh")
.font(.title)
.foregroundColor(.black)
.bold()
Text(verbatim: "Customer Success")
Divider()
TextField("Enter text", text: $text)
Button(action:
print("Click to login")
)
Text(verbatim: "Login")
struct ContentView_Previews: PreviewProvider
static var previews: some View
ContentView()
注意:ContentView_Previews
应该在您的 ContentView
结构之外。
【讨论】:
以上是关于Xcode 11 的问题 - “INT 不能转换为 CGFloat?”的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 转换获取 'Int1' 不能转换为 'Bool'