0
Hinweis: Bitte ignorieren Sie Farben, Farbverläufe und Größe! Meine Sorge ist, Perspektive nicht wie erwartet gearbeitet wirdCATransform3D Perspektive arbeitet nicht an CATransformLayer
Ich versuche Ausgang als Gebrüll zu erreichen,
Aber wenn ich meinen Code ausführen es gibt mir folgende Ausgabe
Schauen Sie sich bitte meinen Code an:
CATransformLayer *baseLayer = [CATransformLayer layer];
baseLayer.anchorPoint = CGPointZero;
baseLayer.bounds = self.view.bounds;
baseLayer.position = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds));
[self.view.layer addSublayer:baseLayer];
CALayer *redLayer = [CALayer layer];
redLayer.backgroundColor = [UIColor redColor].CGColor;
redLayer.frame = CGRectMake(0, 0, 100, 100);
redLayer.position = CGPointMake(0,0);
redLayer.anchorPoint = CGPointMake(1, 0.5); // right
[baseLayer addSublayer:redLayer];
CALayer *blueLayer = [CALayer layer];
blueLayer.backgroundColor = [UIColor blueColor].CGColor;
blueLayer.bounds = CGRectMake(0, 0, 600, 100);
blueLayer.anchorPoint = CGPointMake(1, 0.5); // right
blueLayer.position = CGPointMake(-50,0);
[baseLayer addSublayer:blueLayer];
CATransform3D transform = CATransform3DIdentity;
transform.m34 = -1/80;
transform = CATransform3DRotate(transform, -M_PI_2, 0, 1, 0);
blueLayer.transform = transform;
baseLayer.sublayerTransform = CATransform3DRotate(CATransform3DIdentity, degreesToRadians(80), 0, 1, 0);
Das Problem war, dass in C der Ausdruck "1/80" als Ganzzahl-Division durchgeführt wird, und erzeugt "0". Wenn Sie es in '1/Perspektive 'geändert haben, wobei' Perspektive 'den Typ' CGFloat 'hat, wurde die Gleitkommadivision verwendet, die ein Bruchergebnis ungleich Null erzeugt. –