2012-08-17 2 views
0

내 willrotatetointerfaceorientation 메서드에 다음 코드를 사용하고 있습니다.CGRect 및 CGrectmake 목표 C 의문점

if(UIDeviceOrientationIsLandscape(toInterfaceOrientation)) 
{ 
    NSLog(@"willRotateToInterfaceOrientation landscape"); 
    self.textFieldResult.frame = CGRectMake(146, 210, 97, 31); 
    self.operationLabel.frame = CGRectMake(73, 210, 120, 21); 
} 
else if (UIDeviceOrientationIsPortrait(toInterfaceOrientation)) 
{ 
    NSLog(@"willRotateToInterfaceOrientation Portrait"); 

    self.textFieldResult.frame = CGRectMake(305, 134, 97, 31); 
    self.operationLabel.frame = CGRectMake(82, 138, 120, 21); 
} 

lanscape를 세로 또는 가로로 한 번 회전하면 정상적으로 작동합니다. 그러나 내가 초상화에서 거꾸로 아래로 바뀌면보기의 방향이 흐트러집니다! 컨트롤은 else 블록으로 들어가지만 오리엔테이션은 틀린 것이 아닙니다.

내가 가정하는 것은 CGRect의 경우 뷰의 원본이 상위 뷰의 왼쪽 위 모서리를 기준으로 지정됩니다. 여기 창 자체가 있습니다.

또한 여기서 지정한 좌표는 스토리 보드에 표시된 좌표와 완전히 다릅니다. 거의 2 배 또는 절반입니다. viewWillAppear 메서드에서 위 코드와 같은 코드를 사용하려면 스토리 보드에 표시되는 좌표와 비슷한 좌표 뷰에 대해 다른 좌표 집합을 사용해야합니다.

CGRect와 해당 기능의 작동에 대해 명확하지 않을 수도 있습니다.

답변

0

해당보기에서 CGAffineTransform을 사용하여 문제를 해결할 수 있습니다. 자세한 내용은 THISTHIS