二元运算符+不能应用于CGfloat类型

时间:2016-01-28 22:49:40

标签: ios swift swift2 cgfloat

我遇到了与之前不同代码行相同的问题;但这一次,我无法用上次采用的相同方法解决问题:

 var Y : Int = 0
 var X : Int = 0
 @IBOutlet var ball : UIImageView!
 ball.center = CGPointMake(ball.center.x + X, ball.center.y + Y) 

这是我得到的错误:

  

二元运算符+不能应用于CGfloat int类型的操作数

3 个答案:

答案 0 :(得分:4)

相反,声明它们如下:

let X : CGFloat = 0.0
let Y : CGFloat = 0.0

回复你的评论:

该错误与声明为varlet的错误无关。 您可以将它们声明为var,如果您坚持将其声明为Int,则仍需要执行以下操作:

var X : Int = 0
var Y : Int = 0
ball.center = CGPointMake(view.center.x + CGFloat(X), view.center.y + CGFloat(Y))

答案 1 :(得分:1)

问题是你没有相同的变量类型,例如你不能添加bool和string。

将其更改为CGFloat而不是int:

let X : CGFloat = 0.0
let Y : CGFloat = 0.0

答案 2 :(得分:1)

ball.center.x是CGFloat,X是Int。这就是编译器抱怨的地方。

Swift喜欢你输入强制转换数字类型(好像没有数字域中的层次结构)但你可以通过将X和Y声明为CGFloat而不是Int来避免这种情况。

你也可以通过定义运算符来解决这个问题(Swift应该已经有了imho):

infix operator + {}

func +(left:CGFloat, right:Int) -> CGFloat
{ return left + CGFloat(right) } 

func +(left:Int, right:CGFloat) -> CGFloat
{ return CGFloat(left) + right }