Добавление ограничения в UITableVIEW headerview

Поэтому я новичок в ограничениях.

У меня есть файл nib, который содержит несколько представлений в качестве братьев и сестер. Представление ViewController содержит tableView, и у меня есть другое представление, которое будет добавлено в tableHeaderView (назовем его self.tableHeaderView).

Проблема, с которой я сталкиваюсь, заключается в том, что я хочу изменить размер self.tableHeaderView на основе определенных условий. Я добавил ограничения ко всем моим элементам пользовательского интерфейса, и по какой-то причине я не могу добавить ограничение высоты в self.tableHeaderView через nib.

Я попытался изменить фрейм self.tableHeaderView программно, но это не имеет никакого эффекта, когда я запускаю код в симуляторе, что имеет смысл, потому что, если я использую Auto-layout, он должен игнорировать изменения кадра.

Я попытался добавить ограничение по высоте программным способом, но он сработает.

Это часть кода, которую я должен добавить для ограничения высоты.

[self.tableHeaderView addConstraint:[NSLayoutConstraint constraintWithItem:self.tableHeaderView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:107.0f]]; 

Исключением я получил: *** Ошибка утверждения в – [UITableView layoutSublayersOfLayer:], /SourceCache/UIKit_Sim/UIKit-2903.2/UIView.m:8536


* Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Автоматическая компоновка по-прежнему требуется после выполнения -layoutSubviews. Реализация UITableView -layoutSubviews требует вызова super. '*

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

Файловая структура Nib

Редактировать 1: я получаю это исключение, когда у меня это self.topicHeaderView.translatesAutoresizingMaskIntoConstraints = NO;

Если у меня его нет, я получаю это

Невозможно одновременно удовлетворить ограничения. Вероятно, хотя бы одно из ограничений в следующем списке – это тот, который вы не хотите. Попробуйте это: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательные ограничения или ограничения и исправить его. (Примечание. Если вы видите NSAutoresizingMaskLayoutConstraints, которые вы не понимаете, обратитесь к документации для свойства UIView, переводимой в AutoreizingMaskIntoConstraints) ("", "")

Попытаться восстановить, нарушив ограничение

Перерыв на objc_exception_throw, чтобы поймать это в отладчике. Методы в категории UIConstraintBasedLayoutDebugging для UIView, перечисленные в разделе, также могут быть полезны.

Редактировать: 2 На 4-дюймовом экране он выглядит хорошо (красный фон покрывает весь столHeaderView, как я ожидал) 4 "Симулятор

На 3,5-дюймовом экране красный фон (который применяется на наконечнике, простирается до определенной высоты, даже если я устанавливаю высоту 117.0f. Элементы пользовательского интерфейса, которые находятся внутри таблицыHeaderView, отображаются правильно)

3.5 "экран

Синяя линия внизу – это разделительная линия, а синяя рамка вокруг таблицыHeaderView.

2 Solutions collect form web for “Добавление ограничения в UITableVIEW headerview”

Когда вы добавляете представление в виде верхнего или нижнего колонтитула в представление таблицы, вы не можете использовать ограничения для этого представления, но только внутри него. Кроме того, представление должно быть в верхней части иерархии (как и у вас), если вы переместите его как подпункт в другое представление, это даст ту же ошибку.

Вы можете изменить высоту представления непосредственно в коде, установив тот же фрейм с измененной высотой. Это работает нормально.

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

 tableView.tableHeaderView.frame = ...; tableView.tableHeaderView = tableView.tableHeaderView; 

У меня была та же проблема, я не мог использовать ограничения для tableHeaderView.

Затем я создал другой subView для создания ограничений.

 // 1 - create a header view and a subHeaderView UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, bounds.size.width, bounds.size.height - 64.f)]; headerView.backgroundColor = [UIColor blackColor]; tableView.tableHeaderView = headerView; UIView *subHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, bounds.size.width, bounds.size.height - 64.f)]; [headerView addSubview:subHeaderView]; // 2 - add constrainedView to subHeaderView (Eg) UIView *constrainedView = [UIView new]; [constrainedView setTranslatesAutoresizingMaskIntoConstraints:NO]; [subHeaderView addSubView:constrainedView]; // 3 - addConstraints of subviews into subHeaderView (Eg) [subHeaderView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[constrainedView]|" options:0 metrics:metrics views:views]]; [subHeaderView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[constrainedView]|" options:0 metrics:metrics views:views]]; 

Это работает над моим проектом, iOS 7.0 / Xcode 5.0.2

  • Что означает «Использовать стандартное значение и Ограничить полях» в Auto Layout?
  • Моя пользовательская ячейка таблицы UITableViewCell отображается как пустой список элементов
  • Как добавить пользовательский UIButton к файлу nib в XCode?
  • Использование нескольких файлов nib с одним контроллером представления?
  • Как нажать UIViewController с файлом NIB
  • Загрузка пользовательского UIView из nib, все подпункты, содержащиеся в nib, равны нулю?
  • Как добавить информацию об авторских правах в файл Nib?
  • Ошибка при проверке приложения iOS
  • Какие проблемы могут привести к отключению владельца файла nib?
  • Представления отражаются на языках RTL
  • Загрузка файлов Nib крайне медленно
  • Interesting Posts

    У кого-нибудь еще проблемы с шифрованием iOS 5?

    Сохранение списка контактов в NSMutableArray

    Что означает это предупреждение Xcode? «Исполняемый файл приложения не требует требуемой архитектуры. …»

    Оттенок моей панели навигации изменяется автоматически

    Клавиатура NativeScript для поля ввода отрицательных чисел

    Соответствует ли UITableViewController UITableViewDataSource, UITableViewDelegate

    Почему я получаю «пропущенный прокси для идентификатора <some external object>» сообщений?

    Авторезизация маски программно vs Interface Builder / xib / nib

    отключить масштабирование видового экрана iOS 10+?

    Ориентация изображения всплеска iOS на пейзаж / портрет в соответствии с ориентацией запуска

    'Set <NSObject>' не имеет члена с именем 'anyObject.' – Xcode 6.3

    Добавьте тень под панель заголовка в UITableView

    Как сделать действие, нажав на ScrollView в Tableview Customcell

    Снимки Firebase в неправильном порядке

    Как проверить уведомления об изменениях производительности в iOS-симуляторе?

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