Почему iOS 13 отбрасывает изменения в макете? - PullRequest
0 голосов
/ 24 октября 2019

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

Это происходит только при запуске на iOS 13 со сборкой из Xcode 11Если я работаю на iOS 12 со сборкой из Xcode 10.3 или Xcode 11, я не вижу этой проблемы. Если я работаю на iOS 13 со сборкой из Xcode 10.3, я не вижу этой проблемы.

Я пытался поставить символическую точку останова на -[NSLayoutConstraint setActive:], но она не срабатывает при переводе приложения в фоновый режимили вернуть его на передний план.

Кто-нибудь еще сталкивался с такой проблемой? Есть намеки? Спасибо!

РЕДАКТИРОВАТЬ: Небольшой проект, демонстрирующий эту проблему на https://github.com/cooksey/CellLayout

Запустите приложение, и оно должно показать табличное представление с меткой рядом с изображением,Оставьте приложение на главном экране, затем вернитесь в приложение, и теперь метка накладывается на изображение.

1 Ответ

1 голос
/ 24 октября 2019

Проблема заключается в том, что в ячейке xib вы сняли флажок Установлено для ограничения метки с выравниванием по изображению. Но это именно то ограничение, которое вы хотите, чтобы оно оставалось активированным.

(Впрочем, это просто симптоматично. Проблема real в том, что ваша цель - поменять местами ограничения, и выделать это неправильно. Вы пытаетесь сделать это, начиная с обоих наборов ограничений в файле xib . Нет. Вы начинаете с one , установленного в xib файл и создайте другой набор в коде. Сохраняйте сильные ссылки на оба набора. Теперь их поменять местами тривиально. Примечание: во время обмена всегда удаляйте перед добавлением, иначе возникнет конфликт. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...