Я разрабатываю приложение swift
, которое показывает фотографию, карту и содержимое - все это в заголовке UITableView
.Почему мои ограничения делают макет разным во время работы приложения на iphone 5 и iphone 6?
При запуске приложения на Iphone 5, это выглядит следующим образом:
Желтое поле представляет собой вид текста, который имеет следующие ограничения:
и :
Это выглядит отлично на Iphone 5. Тем не менее, когда я запускаю его на Iphone 6, я вижу:
Я не понимаю, почему эти два вида отличаются.
Теперь в моем коде, в viewDidLoad()
у меня есть вызов для метода:
defineHeaderView()
, что в основном заселяет вид заголовка с данными (например, заполняет имя пользователя, текст, фото).
У меня также есть этот блок кода:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
sizeHeaderToFit()
}
func sizeHeaderToFit() {
let headerView = myTable.tableHeaderView!
headerView.setNeedsLayout()
headerView.layoutIfNeeded()
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var frame = headerView.frame
frame.size.height = height
headerView.frame = frame
myTable.tableHeaderView = headerView
}
В storyboard
я определить headerview как вид внутри UITableView
:
Можете ли вы объяснить мне, почему мнение отличаются на обоих экранах?
Чтобы дать более полное представление, вот другие ограничения:
Карта:
и фон фотографии, которая находится здесь:
имеет следующие ограничения:
Я предполагаю, что проблема связана с вашим изображением. Экран iPhone 5 более тонкий, и в зависимости от того, как ваши изображения и ограничения имеют размер (и если clipSubviews установлен в true/false), изображения будут выглядеть совсем по-другому. – PeejWeej
Вы должны попробовать отладить иерархию представлений на разных устройствах, чтобы проверить, каковы фактические рамки/ограничения: – PeejWeej
Информация об именах ваших просмотров и других ограничениях недостаточно.Так что это просто предположение: Ограничение для высоты просмотров (желтый) связано с «большим или равным». Согласно вашему второму ограничению, верхняя часть вашего представления должна быть на 644 балла ниже родителей - это статическое значение. Так что на устройствах разных размеров (высоты) ваш вид будет растянут по высоте. –