2012-04-20 3 views
0

나는 UI30View를 initWithFrame으로 만들고 정확히 원하는 위치에 멋지게 표시합니다. 내가보기 (이 같은 다른 뷰)를 누르면UIView는 서로 다른 두 가지 방법으로 센터를 다르게보고합니다.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
    NSLog(@"center: %f",self.center.x); 
} 

, 그들은 모두가 제대로 자신의 중심 지점으로 의미가 숫자를 기록 :

일부 터치 상호 작용을 테스트하기 위해, 나는 다음과 같은했다 뷰의 슈퍼 뷰의 좌표 공간 메서드 내에서 동일한 로그 문을 수행하면 self.center.x은 뷰의 수퍼 뷰 공간에 좌표를보고하지 않습니다. 대신 경계 중심 인 지점을보고합니다. 즉,보기가 100 픽셀 너비 인 경우 모든보기에 대해 50을보고합니다.

내가 이해할 수없는 것은 이러한보기가 움직이지 않으며 프레임이 CGRect으로 전달되고보기가 올바른 위치에 표시되기 때문에 프레임이 initWithFrame의 시작 부분에 명확하게 설정되어 있다는 것입니다. 그렇다면 왜 그 방법으로 중심점을 제대로보고하지 않는 것일까 요?

+0

당신이 initWithFrame를 게시 할 수 없습니다 :? – danh

답변

1

-initWithFrame: 동안보기가 아직 수퍼 뷰에 추가되지 않았습니다.

(나중에 다른 어떤 코드가 수퍼에 추가 - 수동 펜촉 로딩 코드의 일부, 또는 같은.)

+0

전적으로 동의합니다 ... 플러스 5를 더할 것입니다 .. – Nit

관련 문제