Swift二进制运算符”不能应用于两个CGFloat操作数

前端之家收集整理的这篇文章主要介绍了Swift二进制运算符”不能应用于两个CGFloat操作数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 Swift中写一个函数来检测我点击的六边形.但是我遇到了一个奇怪的错误消息,指出我不能添加两个CGFloats.无论我做了什么,例如改变为var,单独声明和分配,没有工作.我想有一些其他的错误,但我找不到.代码如下:
  1. func pointToCoordinate(position: CGPoint) -> (Int,Int) {
  2. var gridHeight = 2 * singleRadius / sqrt(CGFloat(3)) * 1.5
  3. var gridWidth = 2 * singleRadius
  4. var halfWidth = singleRadius
  5.  
  6. var relativePosition = CGPoint(x: position.x - totalRadius / 2,y: position.y - totalRadius / 2)
  7. println((relativePosition.y / gridHeight))
  8. var row = -(cgfloatToInt)(relativePosition.y / gridHeight)
  9. var column: Int
  10.  
  11. println((relativePosition.x + halfWidth * CGFloat(row + 1)) / (gridWidth))
  12. column = cgfloatToInt((relativePosition.x + halfWidth * CGFloat(row + 1)) / (gridWidth))
  13.  
  14. // var innerY: CGFloat = CGFloat(relativePosition.y) + CGFloat(gridHeight * row)
  15. var innerX = relativePosition.x
  16. var innerY = relativePosition.y
  17.  
  18. innerY = innerY - CGFloat(gridHeight * row)
  19.  
  20. println((innerX,innerY))
  21. return (column,row)
  22. }
错误信息是错误的.问题是你正在尝试增加一个Int和一个CGFloat.

更换:

  1. innerY = innerY - CGFloat(gridHeight * row)

有:

  1. innerY = innerY - gridHeight * CGFloat(row)

以上答案是您当前版本的代码.对于与您发布的错误消息相对应的已注释版本:

更换:

  1. var innerY: CGFloat = CGFloat(relativePosition.y) + CGFloat(gridHeight * row)

  1. var innerY: CGFloat = CGFloat(relativePosition.y) + gridHeight * CGFloat(row)

猜你在找的Swift相关文章