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
/ Y
, CGPointMake
等C全局函数(它们在Swift 2.2中被弃用,在Swift 3中被删除)。
Swift将CGRect
和CGPoint
作为本机类型导入,具有初始化器,实例方法等。它们使用起来更自然,并且它们不像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) } } }
- 在iPhone上的应用程序购买不可再生订阅types的新拒绝吗?
- iOS:动画自己的Toast视图
- MobileFirst Starter – 生产模式下的Bluemix推送通知失败
- 如何在UILabel中将文本放入圆圈中
- 这是什么意思:“属性types”JSQMessagesCollectionView“与inheritance自”UICollectionViewLayout“types的”UICollectionView“不兼容
- 真的很酷的方式来创buildiPhone应用程序的自定义UITabBar?
- 连接一个CollectionView到一个ViewController,在连接dataSource-Swift-XCode时出错
- 如何在加载地图时直接显示多个注释的标题
- 检查可选的协议方法是否在Swift中实现?