Ну, конечно же, это была моя вина.
Урок номер один: Вы не делаете себе одолжений, оставаясь в стороне от всехночью пытаюсь исправить испорченный код.Отдохни!Пейте больше воды!Вероятно, вы только усугубите ситуацию, если будете продолжать пытаться заставить свой мозг выполнять сложную алгоритмическую стратегию и логику после его сна.
Оказывается, у меня был мошеннический UIView в нижней части представления.иерархия, у которой вообще не было установлено свойство autoresize.Я думал, что я просмотрел все, но оказывается, что я пропустил один.(Всего один маленький обзор и целый день!)
Я могу сказать для любого, кто придет позже с подобным разочарованием, что Autoresizing
действительно работает как задокументировано.Если вы думаете, что «что-то не вызывается», то вы, вероятно, смотрите не в том месте.Кроме того, константы перечисления UIViewAutoresizingMask
не используются точно так же, как в Интерфейсном Разработчике.В IB вы «блокируете» поля, тогда как при их программной настройке заблокированные поля предполагаются по умолчанию, и вы «разблокируете» их, устанавливая «Гибкие».Так, например, установка только битов FlexibleWidth и FlexibleHeight эквивалентна включению всех параметров автоматического изменения размера в IB.Прибрасывая любую из масок полей (например, UIViewAutoresizingFlexibleLeftMargin
), вы «отменяете выбор» соответствующей опции автоматического изменения размера полей в IB.(Я видел много других сообщений, плавающих вокруг, где это, казалось, было главной точкой беспорядка для некоторых людей.)
Однако во время моего исследования я заметил, что, похоже, нет никакого видасобытие, сообщение, уведомление или другое, когда размер UIView изменяется, автоматически или нет.Хотя это и не нужно для изменения размеров подвидов, было бы неплохо знать, когда это происходит в ситуации, когда вы хотите, чтобы scrollView или tableView прокручивались, если его размер кадра когда-либо изменится.Я знаю, что это легко сделать, когда клавиатура всплывает, потому что вокруг нее есть система уведомлений, а также методы TextField
delegate
.Так что, возможно, тема для другого сообщения ...
В любом случае, спасибо всем, кто участвует в StackOverflow!