2017-01-13 3 views
1

프레임을 따라 정사각형으로 그려지는 뷰 (그림은 subview이라고 함)에 투시 변환을 적용하려고합니다. 수퍼 뷰에서 가로로 가운데에 있으며 수퍼 뷰의 너비의 3/4입니다. enter image description hereCATransform3DRotate 후 클리핑보기

나는이 조각 사용하고 있습니다 : 내가 필요한 변환을 수행하지만 이상한 효과가

var rotationAndPerspectiveTransform = CATransform3DIdentity 
rotationAndPerspectiveTransform.m34 = CGFloat(-1.0/280.0) 
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 30.0 * CGFloat.pi/180.0, 1.0, 0.0, 0.0) 
subview.layer.transform = rotationAndPerspectiveTransform 

- 사각형의 오른쪽 부분은 "클립"되어

enter image description here

무엇이 그것의 원인입니까? 어떻게 피할 수 있습니까?

감사합니다.

답변

0

아, 프레임 경계 문제보다 오래된 경계입니다. 프레임은 변형 후에 더 넓어지고 더 이상 경계에 맞지 않습니다.

let transformedFrame = segmentView.layer.frame 
let transformedBounds = segmentView.layer.bounds 
let correctedBoundsX = (transformedFrame.width - transformedBounds.width)/2 

segmentView.layer.bounds = CGRect(x: correctedBoundsX, y: transformedBounds.origin.y, width: transformedBounds.width, height: transformedBounds.height) 
: 나는 여전히 수평을 중심으로하는 원으로

이 잘린는 속임수를 썼는지