2016-08-10 2 views
0

최근에 뷰와 레이어에서 CGAffineTransformCATransform3D으로 작업했습니다. 레이어 레벨 및 특히 뷰 수준에서 변형을 적용하면 자동 레이아웃이 관련 뷰의 프레임을 업데이트하지 않아야합니다. 예를 들어, 레이아웃 |H:[ViewA]-[ViewB]|을 따르는 것을 고려하십시오. 그냥 ViewA에 변형을 적용하면.CGAffineTransform이 자동 레이아웃에 영향을주지 않습니다.

//We can either 
    ViewA.transform = CGAffineTransformMakeScale(1.5, 1.5) 
    ViewA.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1.0) 

하지 ViewB 자동 ViewA 높이, 폭 또는 위치가 변화 한 후에 변경된 이래로 RECT 조정한다. 또한

self.view.layoutIfNeeded() 

답변

1

변환이 뷰의 Frame 또는 Bounds에 영향을주지 않는 또는 프레임이 정의되지 않은 상태가됩니다 호출했습니다. 이를 설명하기 위해 : X : 10, Y : 10, W : 100, H : 100의 프레임을 가진 직사각형의 이미지를 가지고 있고 45도 회전시켜야합니다 ... 프레임은 무엇이되어야합니까?

애플의 워드 프로세서

transformation [정보 :이 속성은 항등 변환되지 않습니다

경우, 프레임 속성 값은 정의되지 않은이므로 무시해야합니다.

이것은 AutoLayout이 업데이트를 수행하지 않는 이유를 설명합니다.

+0

고마워요. 문서에서 그 내용을 놓쳤습니다. 실제로 프레임을 로깅하고 있었고, 프레임이 얽혀 있지만 관련보기가 혼란스러워서 스케일 된 결과를 얻었습니다. 단지 변형이 아이덴티티로 바뀌고 그 차이를 프레임에 적용하는 방법이 궁금합니다. – Azerue

관련 문제