0
참고 : 색, 그라디언트 및 크기를 무시하십시오! 내 관심은,CATransform3D 퍼스펙티브가 CATransformLayer에서 작동하지 않습니다.
내가 울부 짖는 소리로 출력을 달성하기 위해 노력하고 예상대로 관점이 작동되지
하지만 난 내 코드를 실행할 때 그것은 나에게 다음과 같은 출력을주고있다
내 코드를 확인하십시오.
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);
C에서 정수 나누기로 표현식 '1/80'이 수행되고 '0'이 생성되는 것이 문제입니다. 'perspective/perspective'로 변경했을 때,'perspective'는'CGFloat' 타입을 가지며, 소수점이 아닌 0 결과를 생성하는 부동 소수점 나누기를 사용하게 만들었습니다. –