Swift 3中的CGRectGetMidX / Y在哪里?

在Siwft 3中,我找不到用于计算节点位置的CGRectGetMidX和Y. 我也找不到CGPointMake。 在这种情况下,我如何在SKScene的中心设置节点?

谢谢!

更新:我通过这种方式创建了一个节点并指定了它的位置;

let node = SKSpriteNode() node.position = CGPoint(x:self.frame.size.width/2, y:self.frame.size.height/2) node.size = CGSize(width: 100, height: 100) node.color = SKColor.red self.addChild(node) 

为什么它在指定位置的其他地方? 我首先想到Swift3发生了变化,CGPointMake的丢失导致了这个问题,但似乎并不是原因。 在这种情况下,CGRect的使用更好吗? 如果您可以编写修复此职位问题的代码,那将非常有用。 再次,谢谢你的帮助。

在Swift中,你不应该使用那些旧式的符号。 只需使用构造函数和属性:

 let point = CGPoint(x: 1, y: 2) let rect = CGRect(x: 1, y: 2, width: 3, height: 4) let mx = rect.midX 

不应在Swift中使用CGRectGetMidX / YCGPointMake等C全局函数(它们在Swift 2.2中被弃用,在Swift 3中被删除)。

Swift将CGRectCGPoint作为本机类型导入,具有初始化器,实例方法等。它们使用起来更自然,并且它们不像C函数曾经那样污染全局名称空间。

 let point = CGPoint(x: 0, y: 0) //replacement of CGPointMake let rect = CGRect(x: 0, y: 0, width: 5, height: 5) //replacement of CGRectMake let midX = rect.midX //replacement of CGRectGetMidX let midY = rect.midY //replacement of CGRectGetMidY 

他们的尊重API参考在上面链接。 您也可以使用CoreGraphics API参考 。

您的代码中有太多的中心计算。 用这个。

 extension CGRect { var center : CGPoint { get { return CGPoint(x:self.midX, y: self.midY) } } }