Отрицательный множитель NSLayoutConstraint дает неожиданные результаты
Мы используем Xcenter
а также Ycenter
NSLayoutConstraint
позиционировать subview
внутри родителя superview
, Так как нам нужно сохранять пропорциональную позицию, мы не можем использовать constant
Значение ограничений для его позиционирования, оно должно основываться исключительно на множителе.
subview
может быть положение за пределами superview
границы, поэтому нужен отрицательный множитель. Дело в том, что когда мы применяем отрицательный множитель (через код), позиция подпредставления перемещается неожиданным образом. Использование формулы автоматического макета кажется возможным, но на практике это не так. Вот визуализация:
После установки ограничений ширины / высоты я устанавливаю X и Y, например, так:
let xAnchor = NSLayoutConstraint(item: self, attribute: .centerX, relatedBy: .equal, toItem: superview, attribute: .centerX, multiplier: multpliers.x, constant: 0)
xAnchor.isActive = true
let yAnchor = NSLayoutConstraint(item: self, attribute: .centerY, relatedBy: .equal, toItem: superview, attribute: .centerY, multiplier: multpliers.y, constant: 0)
yAnchor.isActive = true
Только когда множитель отрицателен, мы получаем неожиданные результаты.
У кого-нибудь есть подсказка, что происходит с отрицательными множителями? Мы застряли на этом в течение нескольких старых добрых дней...