Я не мог открыть раскадровку - она просто дала мне спиннинг Beachball смерти, так что я написал сам. Как обычно с Autolayout, существует несколько способов для достижения конечного результата, но каждый решает основную проблему, которая:
- Ни
MKMapView
ни UITableView
имеет внутренний размер (лейбл имеют внутренний размер).
- Вы должны указать
height
для MKMapView
для того, чтобы исправить y position
и height
в UITableView
, а также MKMapView
Так я покажу два способа сделать это.
Метод 1 (мой предпочтительный метод: Используйте UIStackView
а):
- Встройте
MKMapView
и UITableView
в вертикальной UIStackView
- PIN-кода
UIStackView
к раскладке Guides/Грани вашего SuperView
- Set Атрибуты-> Распределение на
Fill Equally
Это имеет то преимущество, что Вы можете настроить макет для различных размерных классов непосредственно в IB и нет никаких «магических» чисел, так что он работает для всех классов Размер без изменений


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

У этого есть недостаток в том, что вам может потребоваться отрегулировать ограничение по высоте MKMapView
в зависимости от iDevices разного размера (хотя вы можете обновить ограничение, чтобы быть частью; Я не проверял)
В обоих моих примерах я даю height
к MKMapView
, который затем определяет y position
и height
от UITableView
.
Если вы ищете учебное пособие, в котором подробно объясняется автозапуск (если в документации не делается все ясно), я рекомендую Developing iOS 9 Apps with Swift
на iTunesU
, но в Интернете есть большие номера.
Я не понимаю вашу проблему или ваш «вопрос». Какую ошибку вы получаете? Какова ваша конкретная проблема? Каков ваш ожидаемый результат и что вы на самом деле получаете? Изображения будут полезны, потому что ваши ограничения выглядят прекрасно. –
Я отредактировал этот вопрос и предоставил дополнительный снимок экрана, как вы предложили. Надеюсь, теперь это становится яснее.(И извините за мой английский) – lukas
Интерфейс Builder говорит вам о проблеме в древовидном представлении слева от экрана (красная стрелка против сцены), но теперь я вижу, что у вас есть два противоречивых ограничения: вы говорите «MKMapView» чтобы быть размером по вертикали, так что это «259 точек от нижней части экрана» И «0 точек от вершины TableView». Эти конфликты. Удалите ограничение, равное 259 точкам в нижней части экрана. Если вам это трудно, я настоятельно рекомендую вам ознакомиться с документацией или найти учебное пособие. –