2013-11-08 9 views
4
- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:YES]; 

    self.mapView.frame = self.view.bounds; 
    self.mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

    CLLocationCoordinate2D startCoord = CLLocationCoordinate2DMake(36.7472, -95.9594); 
    MKCoordinateRegion adjustedRegion = [self.mapView regionThatFits:MKCoordinateRegionMakeWithDistance(startCoord, 10000*1609.344, 10000*1609.344)]; 
    [self.mapView setRegion:adjustedRegion animated:YES]; 
} 

Это код, который у меня есть прямо сейчас. Когда я изменяю ориентацию своего iPad от пейзажа к портрету, размер карты не меняется. Я бы хотел, чтобы он заполнил весь вид. Я попытался найти google и stackoverflow для решения, но мне не повезло.Как автоматически изменить размер mkmapview, чтобы заполнить весь экран при изменении ориентации?

Любая помощь была бы чрезвычайно оценена.

ответ

10
-(void)viewWillLayoutSubviews { 
    [super viewWillLayoutSubviews]; 
    self.mapView.frame = self.view.bounds; 
} 

Это будет гарантировать, что отображение кадров будет скорректирован к представлению границ всякий раз, когда раскладка вид контроллера срабатывает (например, на авторотации).

Вы можете фактически взять линию рамки рамки из видаWillAppear, поскольку viewWillLayoutSubviews запускается в начальное время установки.

+0

Я пробовал это. Это ничего не изменило. – Beebunny

+0

Вы используете автозапуск? Я предполагал, что вы не были с тех пор, как вы устанавливали кадр вручную, но, возможно, вы и этот начальный набор кадров не имеет никакого эффекта. Это также остановило бы дальнейший ручной макет. Также попробуйте поставить точку останова на viewWillLayoutSubviews и посмотреть, даже ли она работает, и если self.mapView не равен нулю. – jsd

+0

спасибо jsd! autoresizingMasks были медленными, это сработало чудеса. – antiblank

6

Если вы используете Autolayout, вы можете: - перейти к Раскадке, а затем щелкнуть по карте. - найдите сегментированный элемент управления на нижней части раскадровки и щелкните сегмент «Pin». Там добавьте ограничения для левого, правого, вверх и вниз. Это должно делать то, что вы хотите.

Очень простой и не требует кода.

Смежные вопросы