swift – 从一个结构转换为另一个结构

前端之家收集整理的这篇文章主要介绍了swift – 从一个结构转换为另一个结构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我将一些Objective-C代码转换为 Swift代码,我有以下问题:

目标C代码

SCNNode *textNode  = [SCNNode nodeWithGeometry:text];
textNode.transform = CATransform3DInvert(self.chartNode.worldTransform);

这是我尝试的转换代码

let textNode = SCNNode(geometry: text)
 textNode.transform = CATransform3DInvert(self.chartNode.worldTransform)

但是,我收到一个错误:’SCNMatrix4不能转换为CATransform3D’

我认识到CATransform3DInvert采用CATransform3D类型的参数,而包含的参数类型为SCNMatrix4.

我尝试了以下的尝试:

textNode.transform = CATransform3DInvert(CATransform3D(self.chartNode.worldTransform))

但这不行.

然后我发现CATransform3D和SCNMatrix4都是结构体,我不确定如何从一个结构转换为另一个结构(或者即使可以在Swift中的结构之间转换)

也许还有一个更简单的方法

任何帮助将不胜感激 – 谢谢.

@H_502_28@ 好,

Airspeed Velocity提供的链接有一个很好的解释,很容易转换为Swift(实际上是相同的).

CATransform3D等是基于Mac OS X,不适用于iOS – 而是使用iOS SCNMatrix4等.
链接的帖子 – 头文件中,您可以找到使用的类型为SceneKitTypes.h – 如果要在github上查找副本:https://github.com/andymatuschak/Khan-Academy-Offer-Acceptance-Toy/blob/master/§/SceneKitTypes.h

我使用SCNMatrix4Invert作为上面提到的rintaro,它的工作原理.

那么Swift代码现在是:

let textNode = SCNNode(geometry: text)
textNode.transform = SCNMatrix4Invert(self.chartNode.worldTransform)

猜你在找的Swift相关文章