Использование ограничений для сохранения двух табличных видов одинаковой высоты и одинакового расстояния

Контекст / Что я хотел бы сделать

  • Я создаю это для iOS 7
  • Я использую StoryBoard
  • У меня есть два UITableViews , которые я бы хотел оставить на одной высоте и на расстоянии друг от друга, чтобы сохранить визуальную согласованность между устройствами 3,5 и 4 дюйма
  • Поэтому при переключении с 4-дюймового экрана на 3,5-дюймовый экран я бы хотел:
  • Стол выглядит короче, но остается равным по высоте
  • Для просмотра верхней таблицы, чтобы сохранить тот же y pos
  • Для отображения нижнего стола сдвиньте его вверх, чтобы поддерживать такое же расстояние между нижней частью верхнего стола и верхней частью нижней таблицы. AKA – тот же самый разрыв между ними

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

Что я пробовал

  • Используя значок Pin в раскадровке, я выбрал оба TableViews и установил их высоту равными и включил этот код в контроллер вида:

[self.topTableView addConstraint: [NSLayoutConstraint constraintWithItem: self.bottomTableView: NSLayoutAttributeBottom relatedBy: 0 toItem: self.bottomTableView: NSLayoutAttributeTop multiplier: 1 constant: 30]];

Вопрос

  • Как сохранить их одинаковой высоты, сохраняя при этом одинаковое расстояние

Обновить

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

2 Solutions collect form web for “Использование ограничений для сохранения двух табличных видов одинаковой высоты и одинакового расстояния”

Просмотрите предложенный Apple способ сделать это (он находится в разделе под названием «Создание равного расстояния между представлениями»).

Изменить: Apple теперь предпочитает использовать представления стека для этой цели. Смотрите это видео WWDC 2013 для OS X, и этот iOS один из WWDC 2015

Они не представляют собой решение только для ограничений. Вместо этого они предлагают размещать скрытые «проставки» между вашими видимыми видами.

Обоснование этого связано с тем, как работает система ограничений. Сопряженные отношения всегда строго между двумя объектами. В ограничении расстояния это отношение должно находиться между вещью, находящейся на расстоянии, и вещью, из которой это X пространство. Вот и все. Нет никакого места для третьего отношения, чтобы сделать пространство (сам результат отношения) равным некоторому другому значению.

С другой стороны, ограничения высоты (и ширины) не являются отношениями. Вы можете установить высоту вещи с простой константой, которая не связана ни с чем другим. Таким образом, есть «комната», чтобы указать отношение к другому объекту – например, высота должна быть равна другой высоте (или ширине или тому подобное).

Поэтому, если вы когда-либо обнаруживаете, что хотите ограничить все связанные друг с другом отношения, посмотрите на высоты и ширину вместо пробелов. В вашем конкретном примере вы можете окружить UITableView s скрытыми UIView s, установить их высоту равными и их пространство для соседей / контейнеров до 0 или некоторой другой низкой константы.

В качестве дополнительного бонуса это все возможно в IB. Нет необходимости в пользовательском коде или подклассах.

Верхний вид таблицы должен иметь ограничение на верх супервизора (или ограничение верхнего макета), ограничение вертикального расстояния до представления нижней таблицы и ограничение по высоте. В представлении нижней таблицы должно быть ограничение на нижнюю часть супервизора и ограничение по высоте с верхним столом. Главное, что вам нужно, – сделать приоритет ограничения высоты таблицы верхнего стола менее 1000, чтобы при изменении высоты экрана одна вещь, которая не является обязательной (ограничение <1000 высоты), будет вещь, которая настраивается. Все это можно настроить в IB.

После редактирования:

Фактически, вам не нужно ограничение высоты в представлении верхней таблицы вообще. Поскольку у меня есть ограничения на верхнюю и нижнюю части супервизора, а также на одну из двух табличных представлений, наличие ограничения, которое делает высоты табличного представления равными, – это все, что вам нужно.

  • TableView с двумя экземплярами NSFetchedResultsController
  • Включить прокрутку UITableView во время прокрутки в UIScrollView
  • Прерывание анимации изменения размера ячейки UITableView?
  • UITableViewCell с xib
  • Кто-нибудь знает хороший учебник для настраиваемого UITableViewCell от Xamarin MonoTouch?
  • Как создать UITableViewCells со сложным контентом, чтобы поддерживать свободное прокручивание
  • Невозможно получить доступ к NSString из другого класса - Objective-c
  • Как инициализировать пользовательскую ячейку таблицы стилей прототипа в iOS 5 раскадровки?
  • Почему мой UITableViewCells становится серым, когда я нажимаю на них?
  • Автоматическая высота UICollectionView внутри UITableViewCell
  • При удалении строки таблицы целая ячейка перемещается влево, как этого избежать?
  • Поддерживать состояние настраиваемой кнопки в ячейке UITableview при прокрутке
  • Interesting Posts

    Как перейти непосредственно к определенному диспетчеру просмотра, если уведомление было открыто

    Проверка обратных вызовов из приложения iOS

    Как определить изменение ориентации?

    Как получить все события из EKCalendar в iOS

    Ошибка получения Неизвестный класс PFImageView в файле Interface Builder для синтаксического анализа

    Как вернуть переменную из блока внутри метода?

    setDefaultCredential не работает для UIWebView в iOS 7, но отлично работает в предыдущих версиях iOS

    Темы iOS ждут действий

    Ожидание анимации UIViewWithDuration не задерживает анимацию

    Swift: UIButton в пользовательской UITableViewCell «Непризнанный селектор, отправленный в экземпляр»

    Как не допустить, чтобы мой MPMoviePlayerController стал черным, когда вернулся из webView, содержащего видео YouTube iOS

    Проводящий жест не работает на UIView в IOS

    Получить текст из pdf в NSString

    Анимация непрозрачности GMSMarker не повторяется

    Xcode, не может найти мой класс, который я создал

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.