2017-01-10 10 views
1

У меня есть проблемы с ограничениями для Map Kit View.Добавление ограничений к отображению карты

Вот скриншот из моих текущих ограничений:

enter image description here

Однако при переходе на другой размер экрана, MKMapView не меняет размер соответственно, хотя ярлык с теми же ограничениями ведет себя, как и ожидалось:

enter image description here

Можете ли вы сказать мне, что я делаю неправильно?

Вот проект Xcode:

https://dl.dropboxusercontent.com/u/18149046/Test.zip

+0

Я не понимаю вашу проблему или ваш «вопрос». Какую ошибку вы получаете? Какова ваша конкретная проблема? Каков ваш ожидаемый результат и что вы на самом деле получаете? Изображения будут полезны, потому что ваши ограничения выглядят прекрасно. –

+0

Я отредактировал этот вопрос и предоставил дополнительный снимок экрана, как вы предложили. Надеюсь, теперь это становится яснее.(И извините за мой английский) – lukas

+0

Интерфейс Builder говорит вам о проблеме в древовидном представлении слева от экрана (красная стрелка против сцены), но теперь я вижу, что у вас есть два противоречивых ограничения: вы говорите «MKMapView» чтобы быть размером по вертикали, так что это «259 точек от нижней части экрана» И «0 точек от вершины TableView». Эти конфликты. Удалите ограничение, равное 259 точкам в нижней части экрана. Если вам это трудно, я настоятельно рекомендую вам ознакомиться с документацией или найти учебное пособие. –

ответ

0

Я не мог открыть раскадровку - она ​​просто дала мне спиннинг Beachball смерти, так что я написал сам. Как обычно с Autolayout, существует несколько способов для достижения конечного результата, но каждый решает основную проблему, которая:

  1. Ни MKMapView ни UITableView имеет внутренний размер (лейбл имеют внутренний размер).
  2. Вы должны указать height для MKMapView для того, чтобы исправить y position и height в UITableView, а также MKMapView

Так я покажу два способа сделать это.

Метод 1 (мой предпочтительный метод: Используйте UIStackView а):

  1. Встройте MKMapView и UITableView в вертикальной UIStackView
  2. PIN-кода UIStackView к раскладке Guides/Грани вашего SuperView
  3. Set Атрибуты-> Распределение на Fill Equally

Это имеет то преимущество, что Вы можете настроить макет для различных размерных классов непосредственно в IB и нет никаких «магических» чисел, так что он работает для всех классов Размер без изменений

Example 1: Main Layout Window

Example 1: StackView Utility Window Settings

Метод 2 (жёстко высоту в вид контейнера для MKMapView):

  1. Добавить UIView и поместите MKMapView в нем
  2. Установите MKMapView Авторезистирующие пружины в Инспекторе размеров для сплошного красного цвета для стрелок (и разблокируйте I-Bars, если они установлены); см. изображение ниже
  3. Установите высоту для UIView, содержащую MKMapView; В моем примере я много кода 300
  4. булавками UIView, содержащий MKMapView к Leading, Продольный, Top Layout Guides/SuperView Ребра
  5. PIN-кода UIView, содержащий MKMapView к началу UITableView
  6. PIN-кода UITableView в к переднему, Продольный, Bottom Layout Guides/SuperView Ребра

Example 2: Main Layout Window Example 2: MKMapView Size Inspector

У этого есть недостаток в том, что вам может потребоваться отрегулировать ограничение по высоте MKMapView в зависимости от iDevices разного размера (хотя вы можете обновить ограничение, чтобы быть частью; Я не проверял)

В обоих моих примерах я даю height к MKMapView, который затем определяет y position и height от UITableView.

Если вы ищете учебное пособие, в котором подробно объясняется автозапуск (если в документации не делается все ясно), я рекомендую Developing iOS 9 Apps with Swift на iTunesU, но в Интернете есть большие номера.

+0

Спасибо! Поэтому я понимаю, что Map View и Labels не должны вести себя одинаково, даже если они имеют одинаковые ограничения. Я не знал о функции Stack View, это делает это намного проще! Я действительно ценю твою помощь. – lukas

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

  • Нет связанных вопросов^_^