2017-02-10 5 views
0

Я разрабатываю приложение swift, которое показывает фотографию, карту и содержимое - все это в заголовке UITableView.Почему мои ограничения делают макет разным во время работы приложения на iphone 5 и iphone 6?

При запуске приложения на Iphone 5, это выглядит следующим образом:

enter image description here

Желтое поле представляет собой вид текста, который имеет следующие ограничения:

enter image description here

и :

enter image description here

Это выглядит отлично на Iphone 5. Тем не менее, когда я запускаю его на Iphone 6, я вижу:

enter image description here

Я не понимаю, почему эти два вида отличаются.

Теперь в моем коде, в 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:

enter image description here

Можете ли вы объяснить мне, почему мнение отличаются на обоих экранах?

Чтобы дать более полное представление, вот другие ограничения:

Карта:

enter image description here

и фон фотографии, которая находится здесь:

enter image description here

имеет следующие ограничения:

enter image description here

+0

Я предполагаю, что проблема связана с вашим изображением. Экран iPhone 5 более тонкий, и в зависимости от того, как ваши изображения и ограничения имеют размер (и если clipSubviews установлен в true/false), изображения будут выглядеть совсем по-другому. – PeejWeej

+0

Вы должны попробовать отладить иерархию представлений на разных устройствах, чтобы проверить, каковы фактические рамки/ограничения: – PeejWeej

+0

Информация об именах ваших просмотров и других ограничениях недостаточно.Так что это просто предположение: Ограничение для высоты просмотров (желтый) связано с «большим или равным». Согласно вашему второму ограничению, верхняя часть вашего представления должна быть на 644 балла ниже родителей - это статическое значение. Так что на устройствах разных размеров (высоты) ваш вид будет растянут по высоте. –

ответ

0

Удалите верхнее ограничение вашего UILabel.

+0

Когда я удаляю верхнее ограничение, моя 'UILabel' переместится в самую верхнюю часть экрана ... – user3766930

+2

Я не знаю, является ли это эффективным ответом, но это был бы * лучший * ответ, если вы добавите объяснение * почему * это исправит проблему. – dfd

+0

Я просто добавил дополнительную информацию об ограничениях на исходный вопрос. – user3766930

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