我已经试过了:
CATransform3D rotationTransform = [[self.layer presentationLayer] transform];
这将不起作用,因为编译器将引发警告和错误:
警告:多种方法“-变换”
找到了。错误:无效的初始化程序。
所以我尝试了这个:
CATransform3D rotationTransform = [[self.layer presentationLayer] valueForKey:@"transform"];
错误:无效的初始化程序。
怎么了
最佳答案
-presentationLayer
返回一个id
。您需要将其投射回CALayer:
CATransform3D rotationTransform = [(CALayer*)[self.layer presentationLayer] transform];
为了安全起见,请先检查以下内容:
CATransform3D rotationTransform = {0};
CALayer* presentationLayer = (CALayer*)[self.layer presentationLayer];
if( [presentationLayer respondsToSelector:@selector(transform)]) {
rotationTransform = presentationLayer.transform;
}
但是实际上,没有此检查就可以了。
在第二种情况下,
-valueForKey:
还返回一个id
,您正尝试将其分配给struct,这是不可能隐式完成的。您不能仅将对象指针转换为结构。关于iphone - 如何正确获取presentationLayer的当前转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/878885/