Автоматическое ограничение компоновки с динамической переменной?

Возможно ли иметь ограничение автоматического макета ( NSLayoutConstraint ) с динамической константой / множителем?

Например, это будет стандартный стандарт NSLayoutConstraint :

 NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:obj1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:obj2 attribute:NSLayoutAttributeLeft multiplier:1 constant:0]; 

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

 NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:obj1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:obj2 attribute:NSLayoutAttributeLeft multiplier:1 constant:scrollView.contentOffset.x]; 

Второй будет использовать contentOffset для scrollview и использовать его как константу. Однако, попробовав это, он использует только смещение, которое существует, когда создается ограничение.

Что бы я хотел, чтобы он имел ограничение, обновляющее константу, когда прокрутка просматривается при прокрутке. Таким образом, он будет продолжать использовать самую последнюю contentOffset .

Это возможно? Благодарю.

Да, безусловно.

Фактически, это то, для чего они созданы. Когда вы анимируете представления и т. Д., Вы должны иметь возможность изменять ограничения.

Контр-интуитивно единственное свойство NSLayoutConstraint , которое доступно для записи, является constant свойством. (лол)

Однако вы не совсем правы в своем коде.

Создав ограничение, вы сначала создадите для него свойство …

 @property (nonatomic, strong) NSLayoutConstraint *leftConstraint; 

Затем создайте его …

 self.leftConstraint = [NSLayoutConstraint constraintWithItem:obj1 attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:obj2 attribute:NSLayoutAttributeLeft multiplier:1 constant:0]; 

Затем отредактируйте уже существующее ограничение …

 self.leftConstraint.constant = scrollView.contentOffset.x; 

Затем вам нужно принудительно отобразить представление в виде субвью …

 [self.view layoutIfNeeded]; 
  • Автоматическая компоновка iOS: динамическая высота для ячейки таблицы
  • NSLayoutConstraint в быстрой
  • Трейлинг и ведущие ограничения в Swift программно (NSLayoutConstraints)
  • Правильный способ программного обновления ограничений при изменении ориентации устройства?
  • Добавление ограничений программно в ViewControllerCells
  • Использование ограничений для сохранения двух табличных видов одинаковой высоты и одинакового расстояния
  • Язык визуального форматирования, ограничение ширины и высоты кнопки
  • Константа NSLayoutConstraint не обновляется после настройки
  • Swift: неверный параметр не удовлетворяет: ограничение
  • Xcode - добавление ограничений в UITableView так, чтобы он соответствовал всем размерам экрана
  • Добавить ограничение, не указанное в меню «Редактор» в Xcode
  • Interesting Posts

    Как исправить странные ошибки NSLayoutConstraint, которые, похоже, не влияют на макет в пользовательском UITableViewCell

    В Xcode существует ли способ обойти точки останова «Все исключения» только для одной или нескольких строк?

    AFNetworking 2.0 ERROR: свойство с атрибутом 'сохранить (или сильным)' должно быть типа объекта

    Программно определить, какое приложение iOS доступно пользователю

    Изображение культур вложений в приложении ios 10

    Преобразование пути к файлу URL

    UILabel не показывает subview в iOS8

    Динамическая UILabel с пропорциональной шириной и текстовой высотой

    «InterfaceOrientation» устарел в iOS 8, Как изменить этот метод Objective C

    Карты Watchkit: показать текущее местоположение

    Многозадачность iOS: пусть поток воспроизводится, когда приложение находится в лотке

    Как узнать, является ли частота кадров OpenGL ES заикающейся – без инструментов?

    Как подключиться к Wi-Fi при работе с Gamekit?

    iOS с обновлениями в реальном времени с сервера: Socket (используя потоки) или Apple Push Notification?

    Delphi XE4 FireMonkey TMemo Прозрачный? (IOS)

    Давайте будем гением компьютера.