Отрицательный множитель NSLayoutConstraint дает неожиданные результаты - PullRequest
0 голосов
/ 22 декабря 2018

Мы используем Xcenter и Ycenter NSLayoutConstraint для позиционирования subview внутри родителя superview.Поскольку нам нужно сохранять пропорциональную позицию, мы не можем использовать значение constant ограничений для ее позиционирования, оно должно основываться исключительно на множителе.

subview может быть позицией внеиз superview границ, так что нужен отрицательный множитель.Дело в том, что когда мы применяем отрицательный множитель (через код), позиция подпредставления перемещается неожиданным образом.Использование формулы автоматического макета кажется возможным, но на практике это не так.Вот визуализация:

enter image description here

После установки ограничений ширины / высоты я устанавливаю 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

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

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

...