gpt4 book ai didi

ios - 在 iOS 上,为什么设置层的 sublayerTransform 会使其自身像 CATranformLayer 一样工作?

转载 作者:可可西里 更新时间:2023-11-01 03:33:56 25 4
gpt4 key购买 nike

众所周知,层的zPosition只决定哪一层覆盖哪一层。 zPosition 是 10 还是 1000 都不会影响它的位置。

也就是说,除非我们use CATransformLayer to contain those layers , 那么这些层的 zPosition 将影响层的位置。

但是,在 iOS 5.1.1 中运行的以下代码确实会使 zPosition 改变图层的位置...您可以在新的 Single View App 中尝试,并添加以下代码到 ViewController.m。如果将 layer2zPosition88 更改为 188,我们可以看到图层相应移动。所以代码中没有 CATransformLayer;为什么会这样? (请引用 Apple 文档或任何引用资料)。

另外相关的是,如果行 self.view.layer.sublayerTransform = transform3D; 更改为 self.view.layer.transform = transform3D; 那么 zPosition 对位置没有影响。但是according to the Apple docs, transform and sublayerTransform only differ in whether self is transformed or not :

Two layer properties specify transform matrices: transform and sublayerTransform. The matrix specified by the transform property is applied to the layer and its sublayers relative to the layer's anchorPoint. [...] The matrix specified by the sublayerTransform property is applied only to the layer’s sublayers, rather than to the layer itself.

所以奇怪的是,为什么改变它会导致 self.view.layerCATransformLayer 一样工作。

-(void) viewDidAppear:(BOOL)animated {

CATransform3D transform3D = CATransform3DIdentity;

transform3D.m34 = -1.0 / 1000;

transform3D = CATransform3DRotate(transform3D, M_PI / 4, 0, 1, 0);

self.view.layer.sublayerTransform = transform3D;

CALayer *layer1 = [[CALayer alloc] init];
layer1.zPosition = 33;
layer1.frame = CGRectMake(100, 100, 100, 100);
layer1.backgroundColor = [[UIColor orangeColor] CGColor];

[self.view.layer addSublayer:layer1];

CALayer *layer2 = [[CALayer alloc] init];
layer2.zPosition = 88;
layer2.frame = CGRectMake(100, 120, 100, 100);
layer2.backgroundColor = [[UIColor yellowColor] CGColor];

[self.view.layer addSublayer:layer2];

}

最佳答案

我们可以把layer看成一个坐标层,当我们把一个layer从3D转成3D时,它的坐标变成了3D,但是它的subLayer仍然显示为2D,但是当设置sublayer transfrom3D时,layer会把它的所有子层都显示为3D。和旋转一样

关于ios - 在 iOS 上,为什么设置层的 sublayerTransform 会使其自身像 CATranformLayer 一样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10917380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com