#ios #objective-c #constraints
#iOS #цель-c #ограничения
Вопрос:
Я использую 100% программные ограничения в своем интерфейсном коде. Обновлен до Xcode 13 и iOS 15. Получил множество НОВЫХ предупреждений об ограничениях, в которых говорится, что системе пришлось нарушить некоторые ограничения, чтобы соответствовать другим. Я не видел таких предупреждений в течение нескольких лет и за все это время не касался своего кода ограничений. Тем не менее тщательное тестирование показывает, что мой код продолжает работать правильно. Как дела?
Ответ №1:
Ответ: Я был немного бесцеремонен с выбором времени, когда iOS фактически рассчитала ограниченные размеры. Я поместил все свои объявления программного интерфейса в один метод. В основе этого метода у меня уже давно был код, который выходил за рамки макета интерфейса, в предварительные работы NavCon. Среди этих деклараций NavCon у меня были такие строки, как:
self.view_D0_Tutorial.кадр = self.view_CenterPane_D0_Tutorial.кадр;
В то время, когда я писал и отлаживал эти строки, я отметил, что, используя отладчик, чтобы спросить, каковы данные о местоположении, все, что я когда-либо получал, было CRect (0,0,0,0), но код каким-то образом поступил правильно.
Ну, в ходе обновления iOS, по-видимому, изменила то, как они это делают. В ответ мне пришлось сделать две вещи.
(1) переместил весь предварительный код NavCon в новый отдельный метод и вызвал его с параметром performSelector и задержкой 0.
(2) изменил простое назначение кадра на более ограниченное назначение:
self.view_D0_Tutorial.frame = CGRectMake(0, 0, self.view_CenterPane_D0_Tutorial.frame.размер.ширина, self.view_CenterPane_D0_Tutorial.frame.размер.высота);;
Из-за этой комбинации сообщения об ошибках исчезли, и мой код продолжает работать правильно!