2012-03-03 1 views
6

아마도 내가 얻지 못할 것입니다. 라디안 간단한 UIView의에UIView가 45도 회전했습니다.

#define RADIANS(degrees) ((degrees * M_PI)/180.0) 

를 어디가

self.tweetPeak.transform = CGAffineTransformMakeRotation(RADIANS(45)); 

을 수행 할 때이 사라집니다 객체.

나는보기에는 가늘다 고 생각합니다. 내 인상은보기가 20 ~ 45도 범위에서 점점 작아지고 있다는 것입니다.

뷰를 불투명하게 설정하려고했습니다. 효과가 없습니다.

크리스

+0

화면 밖으로 회전 할 가능성이 있습니까? –

+0

관련이 없지만'RADIONS'는 그 정의에 대한 끔찍한 이름입니다. 그것이하고있는 일이나 사용법을 알려주지 않습니다. –

+0

@ Paul.s 그 스타일의 문제, 매크로, 괜찮아요 이름이지만, 나는 그것을 'TO_RADIANS','DEGREES_TO_RADIANS' 등으로 표시 보았다. 그것은 정말로 당신이 필요로하는 것에 달려 있습니다. –

답변

9

당신은 회전 후 프레임을 조정 중지해야합니다, 그것은 왜 공식적인 이유에 확실 해요, 변환 행렬에 스트레칭 원하지 않는 원인이 있지만, 자신을 사용하여 애플 함께 할 수있는 뭔가가 2D/3D 변환/회전/스케일을 나타 내기 위해 기존의 매트릭스가 아닌 매트릭스 시스템을 사용합니다. 나는 다른 시각으로 동일한 문제를 겪고있었습니다.보기를 회전하는 대신, 실제로 회전 된 실제 뷰가있는 컨테이너로 만들었고 회전 시켰습니다.

+3

CGAffineTransform 및 CATransform3D는 절대적으로 표준적인 전통적인 매트릭스입니다. 애플은 이상한 일을하지 않고있다. 문제는''[CALayer frame]'은 _derived_ 값입니다. 이것은'position','bounds','anchorPoint','transform' 속성을 기반으로합니다. 변환을 변경하면 프레임이 변경됩니다. 그런 다음 프레임을 변경하려고하면 레이어가 위치를 조정하고 bounds.size가 작동하도록 시도합니다. 해결책 : 프레임을 설정하지 마십시오. –

+0

CATransform3D가 전통적인 매트릭스 인 경우 어떻게 설정할 수 없으며 기존의 직교 매트릭스를 말하고 여전히 내 레이어를 볼 수 있습니까? 아니면 그 관점에서 하나? 내가 당신을 의심하지 않는다는 것을 의미하지만, 전통적으로 사용하지는 않습니다. 왜 M.34가 FOV와 유사한 것을 제어합니까? 당신이 저에게 묻는다면 이것은 표준이 아닙니다. 그러나 나는 틀릴 수 있습니다. –

+0

저는 이것을 알아 내려고 노력하고 있습니다. 두 가지 의견은 제 문제를 이해하는 데 정말로 도움이되었습니다. 이걸 실행중인 다른 누군가를 위해 ... 일부 레이블을 회전시키려는 일부 초기화가있었습니다. viewDidLoad에서이 작업을 수행했습니다 ... 올바르게 작동하도록 viewDidAppear로 이동해야했습니다 (프레임이 viewWillAppear 이후까지 설정되어 있으므로). –