2012-06-02 4 views
2

사용자 위치를 표시하는 MKMapView가있는 작동중인 앱이 있습니다. 지금까지 너무 좋아 : 지금 사용자 위치에 장치와 센터를 켜면rotate MKMapView

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations. 
    return YES; 
} 

[myMapView setCenterCoordinate:[myMapView userLocation].coordinate animated:YES]; 

맵뷰 MapView가 회전합니다 : 이제

- (void)viewDidLoad { 
    ... 
    [myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 
    [myMapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES]; 
} 

, 나는 인터페이스 회전 허용 예상대로 사용자 위치는 중앙에 있지 않지만 화면의 맨 아래에 있습니다 (상단에서의 거리는 세로 모드와 동일하게 유지됩니다).

나는 중심에 둘 것으로 기대하지만 ...

아이디어가 있으십니까?

답변

4

수퍼 뷰가 회전 할 때 높이가 변경되면 맵보기의 높이가 자동으로 변경되도록 높이를 setAutoresizingMask:에 포함 시키십시오. 지금은 너비 만 크기가 조정되므로지도 중심의 y 위치는 변경되지 않습니다.

그래서이 라인은 :

[myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 

가 있어야한다 : 당신이 추적 모드를 설정하는 경우

[myMapView setAutoresizingMask: 
    (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; 


또한, 수동으로 사용자의 위치를지도 중앙에 필요가 없습니다 MKUserTrackingModeFollow (지도가 자동으로 처리됩니다). 높이 문제를 해결하기 위해 수동으로 센터링을 시도했지만 자동 크기 조정 마스크를 수정하면 명시적인 센터링이 필요하지 않습니다.

+0

감사합니다 - 끝날 때까지 플래그 이름을 읽었어야합니다 :) 그리고 센터링에 관해서 : 실제로 사용자 지점에 따라 사용자 위치에 따라 사용자 지점이 다를뿐입니다. 하지만 이것을 지적 해 주셔서 감사합니다 ... – Axel