iOS 10: NSInvalidLayoutConstraintException: ограничение неправильно связывает привязки несовместимых типов

После обновления до iOS 10 я получаю эту ошибку в одном из моих приложений.

NSInvalidLayoutConstraintException: ограничение неправильно связывает якоря несовместимых типов:

<NSLayoutConstraint:0x170495270 UIView:0x1010e1d90.top == AppName.OtherView:0x1010dc6f0.centerX (active)>

Раньше у меня никогда не было проблем с использованием такого ограничения, и я получаю его только на своих устройствах iOS 10. Любые идеи?


person Unome    schedule 16.09.2016    source источник
comment
Каковы два якоря в ограничении?   -  person Paulw11    schedule 16.09.2016
comment
такая же проблема здесь. Вы нашли проблему?   -  person netshark1000    schedule 23.09.2016


Ответы (2)


Возможно, вы делаете что-то вроде этого:

NSLayoutConstraint(item: viewA, attribute:
                .leading , relatedBy: .equal, toItem: parentView, attribute: .top, multiplier: 1.0, constant: 20)

Таким образом, вы не сшиваете вместе правильные якоря, такие как .leading и .top. В данном случае это должны быть .leading и .leading.

Интересно, что это не было проблемой с iOS9.

person netshark1000    schedule 23.09.2016
comment
Это было полностью проблемой. У меня был Top-CenterX вместо Top-.CenterY. чего я не понимаю, так это почему это начало падать на iOS 10? Он должен был дать сбой на iOS 9, и Apple предупреждала кого-нибудь, что это изменение станет критическим изменением после выпуска iOS 10? Есть ли где-нибудь список, где Apple публикует критические изменения, которые необходимо обновить перед выпуском ОС? Я видел КУЧУ приложений, которые сходили с ума, когда я обновлялся до iOS 10 с точки зрения макета. - person Unome; 23.09.2016

Просто используйте Reset для предложенных ограничений, это исправит отсутствующие ограничения

person Islam Alshnawey    schedule 16.06.2020