我已经试过了:

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/

10-12 02:49