Tha*_*nks 2 iphone core-animation
我试过这个:
CATransform3D rotationTransform = [[self.layer presentationLayer] transform];
Run Code Online (Sandbox Code Playgroud)
这将不起作用,因为编译器将抛出警告和错误:
警告:找到多个方法"-transform".错误:初始化程序无效.
那么我试过这个:
CATransform3D rotationTransform = [[self.layer presentationLayer] valueForKey:@"transform"];
Run Code Online (Sandbox Code Playgroud)
错误:初始化程序无效.
这有什么问题?
-presentationLayer返回一个id.您需要将其强制转换为CALayer:
CATransform3D rotationTransform = [(CALayer*)[self.layer presentationLayer] transform];
Run Code Online (Sandbox Code Playgroud)
为了非常安全,你先检查一下:
CATransform3D rotationTransform = {0};
CALayer* presentationLayer = (CALayer*)[self.layer presentationLayer];
if( [presentationLayer respondsToSelector:@selector(transform)]) {
rotationTransform = presentationLayer.transform;
}
Run Code Online (Sandbox Code Playgroud)
但在实践中,没有这个检查就可以了.
在第二种情况下,-valueForKey:还返回一个id,您尝试分配给struct,这是不可能隐式执行的.您不能只将对象指针强制转换为结构.
| 归档时间: |
|
| 查看次数: |
1423 次 |
| 最近记录: |