我的CAlayers具有不同的z深度,我想将其转换为z深度以查看我尝试使用此方法进行的所有图层:

CATransform3D transform = CATransform3DMakeTranslation(0, 0,-50 );
rootLayer.sublayerTransform = transform;

但没有变化
我尝试使用这种方法
CATransform3D transform = CATransform3DRotate(trackball->baseTransform, 30, 30 , 0 , 0 );
rootLayer.sublayerTransform = transform;
for (CALayer* layer in rootLayer.sublayers)
{
    CABasicAnimation *theAnimation;
    theAnimation=[CABasicAnimation animationWithKeyPath:@"zPosition"];
    theAnimation.fromValue=[NSNumber numberWithFloat:-40]; // [NSNumber numberWithFloat:frandom(800, 400)];
    theAnimation.toValue=[NSNumber numberWithFloat:200]; // [NSNumber numberWithFloat:frandom(-300, -100)];
    theAnimation.duration=8;
    theAnimation.repeatCount = 1e100;
    [layer addAnimation:theAnimation forKey:@"zPosition"];
}

它沿y方向移动

注意:iPad的方向是横向。

最佳答案

恐怕您提供的代码无法发现问题

假设我们具有以下结构

-> rootLayer
    -> sublayer1
    -> sublayer2
    -> sublayer3
    ...
    -> sublayerN

然后,为了显示sublayer2,您需要将zPosition更改为sublayer1,而不是rootLayer

关于objective-c - 可以在iOS中将CALayer转换为z位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11622322/

10-13 09:27