Swift3 Swift 3 GCFloat到GCRect
我正在我的Swift项目中使用此代码段。 以下代码在Swift 2中运行良好,但在Swift 3中似乎不再运行,它给出了以下错误: 无法将“CGFloat,CGFloat,Int,Int”类型的值分配给“CGRect”类型 有人知道我如何解决这个问题吗?谢谢你的帮助 谢谢D这条线plusLayer.frame=x,y,27,27 应该是 plusLayer.frame=x,y,27为CGFloat,27为CGFloat 这是因为CGRect初始值设定项需要4个相同类型的数字。看看Xcode建议: 这条线plusLayer.frame=x,y,27,27 应该是 plusLayer.frame=x,y,27为CGFloat,27为CGFloat 这是因为CGRect初始值设定项需要4个相同类型的数字。看看Xcode建议:Swift3 Swift 3 GCFloat到GCRect,swift3,ios10,Swift3,Ios10,我正在我的Swift项目中使用此代码段。 以下代码在Swift 2中运行良好,但在Swift 3中似乎不再运行,它给出了以下错误: 无法将“CGFloat,CGFloat,Int,Int”类型的值分配给“CGRect”类型 有人知道我如何解决这个问题吗?谢谢你的帮助 谢谢D这条线plusLayer.frame=x,y,27,27 应该是 plusLayer.frame=x,y,27为CGFloat,27为CGFloat 这是因为CGRect初始值设定项需要4个相同类型的数字。看看Xcode建议:
您需要显式强制转换一个Int类型以生成CGFloat:
您需要显式地将Int类型转换为CGFloat:
作为一名老开发人员,让我们澄清一下: 强制转换是某些语言的强大功能,但必须详细了解 b我们可以使用as进行转换,但与使用CGXX不同 c as必须用于对象的类型转换。 见: d CGRectMake在swift 2.x/xcode 7.3中工作 e不要将其转换为双精度,只需使用:
let r = CGRect(x: 10, y: 20, width: 30, height: 40)
编译器将了解以下哪种方法调用:
public init(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)
public init(x: Double, y: Double, width: Double, height: Double)
public init(x: Int, y: Int, width: Int, height: Int)
我会打电话给3号
如果你写:
let d = 10.0
let r2 = CGRect(x: d, y: 20, width: 30, height: 40)
它会叫第二,因为d是双精度的
我的两分钱。作为一名老开发人员,让我们澄清一下: 强制转换是某些语言的强大功能,但必须详细了解 b我们可以使用as进行转换,但与使用CGXX不同 c as必须用于对象的类型转换。 见: d CGRectMake在swift 2.x/xcode 7.3中工作 e不要将其转换为双精度,只需使用:
let r = CGRect(x: 10, y: 20, width: 30, height: 40)
编译器将了解以下哪种方法调用:
public init(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)
public init(x: Double, y: Double, width: Double, height: Double)
public init(x: Int, y: Int, width: Int, height: Int)
我会打电话给3号
如果你写:
let d = 10.0
let r2 = CGRect(x: d, y: 20, width: 30, height: 40)
它会叫第二,因为d是双精度的
我的2美分。这导致了这个错误:无法将“CGFloat,CGFloat,CGFloat,CGFloat”类型的值分配给“CGRect”@MatthijsOtterloo我修改了我的答案以提供正确的解决方案和解释。这导致了这个错误:无法分配“CGFloat,CGFloat,CGFloat”类型的值,CGFloat“aka”CGFloat,CGFloat,CGFloat,CGFloat”键入“CGRect”@MatthijsOtterloo我已经修改了我的答案以提供正确的解决方案和解释。plusLayer.frame=CGRECTMAKX,y,CGFloat27,CGFloat27有效吗?你确定这段代码适用于Swift 2吗?我无法编译它–您无法将元组分配给结构。使用初始化器CGRectx:x,y:y,width:27,height:27plusLayer.frame=CGRectMakex,y,CGFloat27,CGFloat27工作?您确定此代码适用于Swift 2吗?我无法编译它–您无法将元组分配给结构。使用初始化器CGRectx:x,y:y,宽度:27,高度:27