Отрицательный множитель NSLayoutConstraint дает неожиданные результаты

Мы используем Xcenter а также YcenterNSLayoutConstraint позиционировать 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

Только когда множитель отрицателен, мы получаем неожиданные результаты.

У кого-нибудь есть подсказка, что происходит с отрицательными множителями? Мы застряли на этом в течение нескольких старых добрых дней...

0 ответов

Другие вопросы по тегам