Swift 3中的CGRectGetMidX/Y在哪里?

bag*_*els 17 ios swift3

在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)
Run Code Online (Sandbox Code Playgroud)

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

Sam*_*nen 38

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

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


Ale*_*ica 5

不应该在Swift中使用像CGRectGetMidX/ Y,CGPointMake等等的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
Run Code Online (Sandbox Code Playgroud)

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