Невозможно программно установить множитель NSLayoutConstraint в swift … "Невозможно присвоить результат этого выражения

Я пытаюсь программно установить ограничение для множителя в swift, и когда я устанавливаю значение, он просто дает мне ошибку: «Невозможно назначить результат этого выражения» …

Я объявил NSLayoutConstraint с IBOutlet, а затем установил множитель, как и я с константой для другого, который отлично работает, но этот не примет его …

@IBOutlet weak var clockWidthConstraint: NSLayoutConstraint! override func updateViewConstraints() { super.updateViewConstraints() confirmTopConstraint.constant = 40.0 clockWidthConstraint.multiplier = 0.1 // Gives me the error! } 

Есть идеи?

One Solution collect form web for “Невозможно программно установить множитель NSLayoutConstraint в swift … "Невозможно присвоить результат этого выражения”

Да, это только чтение:

 var multiplier: CGFloat { get } 

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

 var constant: CGFloat 

Редактировать:

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

 let constraint = self.aspectRatioConstraint.with() { (inout c:NSLayoutConstraint.Model) in c.multiplier = self.aspectRatio } 

или используется в более реалистичном контексте:

 var aspectRatio:CGFloat = 1.0 { didSet { // remove, update, and add constraint self.removeConstraint(self.aspectRatioConstraint) self.aspectRatioConstraint = self.aspectRatioConstraint.with() { (inout c:NSLayoutConstraint.Model) in c.multiplier = self.aspectRatio } self.addConstraint(self.aspectRatioConstraint) self.setNeedsLayout() }} 

Если код поддержки:

 extension NSLayoutConstraint { class Model { init(item view1: UIView, attribute attr1: NSLayoutAttribute, relatedBy relation: NSLayoutRelation, toItem view2: UIView?, attribute attr2: NSLayoutAttribute, multiplier: CGFloat, constant c: CGFloat, priority:UILayoutPriority = 1000) { self.firstItem = view1 self.firstAttribute = attr1 self.relation = relation self.secondItem = view2 self.secondAttribute = attr2 self.multiplier = multiplier self.constant = c self.priority = priority } var firstItem:UIView var firstAttribute:NSLayoutAttribute var relation:NSLayoutRelation var secondItem:UIView? var secondAttribute:NSLayoutAttribute var multiplier:CGFloat = 1.0 var constant:CGFloat = 0 var priority:UILayoutPriority = 1000 } func priority(priority:UILayoutPriority) -> NSLayoutConstraint { self.priority = priority; return self } func with(configure:(inout Model)->()) -> NSLayoutConstraint { // build and configure model var m = Model( item: self.firstItem as! UIView, attribute: self.firstAttribute, relatedBy: self.relation, toItem: self.secondItem as? UIView, attribute: self.secondAttribute, multiplier: self.multiplier, constant: self.constant) configure(&m) // build and return contraint from model var constraint = NSLayoutConstraint( item: m.firstItem, attribute: m.firstAttribute, relatedBy: m.relation, toItem: m.secondItem, attribute: m.secondAttribute, multiplier: m.multiplier, constant: m.constant) return constraint } } 
  • Когда вызывается layoutSubviews?
  • Автоматическая компоновка iOS: динамическая высота для ячейки таблицы
  • Имея проблемы с NSLayoutConstraints и используя Auto Layout программно, UIViews застряли в (0,0)
  • UIView и intCinentSize
  • Невозможно изменить Constraint IBOutlet, который определен для разных классов размера в IB
  • Как я могу программно ограничить UIButtons в UIView пропорциональной шириной, используя NSLayoutConstraints
  • Предотвращение создания интерфейса от автоматического создания ограничений?
  • Анимация ограничений изменений, анимация позиции, но переходы по высоте без анимации
  • NSLayoutConstraints и динамическая установка ширины / высоты представления
  • _UIButtonBarStackView: ограничение прерывания при отправке startFirstответчика
  • Как «найти» собственное ограничение?
  • Interesting Posts

    инструмент с открытым исходным кодом для создания макета для приложения IOS

    iTunesConnect Шифрование приложения

    Как использовать CTRunDelegate в iPad?

    iOS 10 Beta SDK – : непризнанный селектор

    Как (быстро) конвертировать float в Byte?

    MonoTouch.Foundation.MonoTouchException выбрано исключение Objective-C. Имя: NSInternalInconsistencyException

    Кордова разрешает неудачу в возврате вызоваLocalFileSystemURL на iOS

    Можно ли запускать меню общего доступа на смартфонах (через HTML / JS)?

    AVAudioSession AVAudioSessionCategoryPlayAndRecord сбой

    Как очистить все кэшированные изображения, загруженные из SDWebImage?

    TabBarController: ориентация просмотров в разных ориентациях

    Живое фото из NSData

    Не удалось выполнить завершение кода автозаполнения кода Xcode 7.3.1

    Предупреждающее предупреждение: целочисленная константа не в диапазоне перечисленных типов «UIViewAnimationOptions»

    Проверьте, есть ли эмулятор в строке

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