Проблема с MKMapView и автозаполнением

#swift #xcode #autolayout #mkmapview

#swift #xcode #автозаполнение #mkmapview

Вопрос:

Я хотел бы использовать представление Map Kit с вложенным представлением контроллера представления, которое занимает только часть экрана, а не полноэкранный режим.

Я не уверен, является ли следующее ошибкой, о которой я должен сообщить, или мне не хватает некоторых важных знаний о том, как использовать представления набора карт. Самый простой способ объяснить проблему — с помощью картинок.

На первом скриншоте я настроил два подвида, UIImageView и MKMapView, на пустом контроллере просмотра, использующем Interface Builder. Оба вложенных представления были ограничены одинаковым образом, т. е. высота, ширина ограничены верхней или нижней частью их супервизора и горизонтально в контейнере. Xcode не выдает ошибок.

Скриншот перед проблемой: введите описание изображения здесь

Второй снимок экрана сделан после перезапуска Xcode. UIImageView остается тем же, однако MKMapView увеличил свою ширину и высоту до 1000. Xcode выдает следующую ошибку: Высота и вертикальное положение неоднозначны для «Просмотра карты».Обновление фреймов не восстанавливает правильную компоновку. Чтобы устранить проблему, размер MKMapView необходимо вручную изменить, чтобы он соответствовал ViewController, после чего обновление фреймов восстанавливает макет, показанный на первом скриншоте. Перезапуск Xcode приводит к повторению проблемы.

Снимок экрана после перезапуска Xcode: введите описание изображения здесь

Я использую последнюю версию Xcode 8, доступную в App Store.

Обновить:
Эта ошибка была исправлена в Xcode 8.1

Комментарии:

1. Похоже, какая-то ошибка в xcode

Ответ №1:

Это кажется ошибкой, и для обхода вы можете добавить простой UIView вместо MKMapKit и после добавления ограничений изменить класс представления с UIView на MKMapView . Хотя вы не сможете установить свойства этого вида карты из раскадровки, но вы можете установить его в коде, используя его выход.

введите описание изображения здесь

Я прошу вас сообщить об этом как об ошибке @https://bugreporter.apple.com

Комментарии:

1. XCode 8.2.1 — У меня не было конца проблемам с MapView и автоматической компоновкой. В частности, при попытке встроить карту в StackView — MapView никогда не регистрировал правильную высоту или пытался переопределить Height = 9M! Это было единственное решение, которое должным образом обновлялось с изменениями ориентации и макета.