2011-02-19 2 views
19

다음 코드를 사용하여 이미지를 회전하지만 페이지 밖으로 "회전 한"이미지의 절반 (y 축 아래)이 사라집니다. 어떻게 고치는 지? heading는 라디안 단위입니다.CATransform3D rotate가 이미지의 절반을 사라지게합니다.

CALayer *layer = myUIImageView.layer; 
    CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity; 
    rotationAndPerspectiveTransform.m34 = 1.0/500; 
    rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, heading, 0.0f, 1.0f, 0.0f); 
    layer.transform = rotationAndPerspectiveTransform; 
+0

는 사실이 Z- 인덱스와 혼란에 보인다

여기 화면에 레이어의 위치를 ​​변경하지 않고 anchorPoint을 변경하기위한 전체 코드입니다. 이 UIImageView는 부분적으로 다른 UIView 뒤에있는 UIView의 일부이지만 회전 후에는 myUIImageView가 항상 위에 그려집니다. – iPadDeveloper2011

답변

32

이 문제를 해결하기 위해 모든 레이어의 속성을 적절히 설정해야합니다. 고마워요 @ 브래드 라슨, 누가 코멘트 here이 솔루션을 제안했다. CATransform3D을 사용하기 시작하면 addsubview에 의해 설정된 정상 zindex보기 계층이 창 밖으로 나옵니다. 뿐만 아니라 (리암 이미 지적한대로) anchorPoint{0.0, 0.0}에 작품을 설정

5
layer.anchorPoint = CGPointMake(0.0, 0.0); 
0

.

 layer.anchorPoint = CGPointMake(0.0, 0.0); 

    CGPoint position = layer.position; 
    CGSize size = layer.bounds.size; 

    CGFloat posX = position.x - size.width/2.0; 
    CGFloat posY = position.y - size.height/2.0; 

    layer.position = CGPointMake(posX, posY);