При изменении размера UIView до высоты или ширины ноль, пружины и распорки перестают работать постоянно - PullRequest
1 голос
/ 06 августа 2010

Я пытаюсь обойти давнюю ошибку в SDK от Apple, но не могу понять, как этого добиться без огромного количества кода.

Вот ошибка:

  1. Создать вид.
  2. Поместите другой вид внутри него, с источником НИЧЕГО, кроме (0,0).
  3. Настройка подпредставления для изменения размера для заполнения

... тогда во время выполнения: 4. Установите размер суперпредставления на ноль 5. Установите суперпредставление обратно на ЛЮБОЙ ненулевой размер

BANG! SDK от Apple становится бесполезным, сбрасывает происхождение подпредставлений, теряет все возможности распознавать сверху вниз и т.д. ).

Я слышал, что эта ошибка существовала в OS X около 5 лет, и Apple до сих пор не исправила ее. То, что я хотел бы, - это каким-то образом (каким-либо образом!) Обойти это без переписывания всей системы пружин / распорок Apple и правильной ее реализации, без ошибок. К сожалению, я даже не могу найти оригинальные ссылки на ошибку OS X, которые кто-то показал мне ранее.

EDIT:

... У меня есть «ящик» для изменения размера в нижней части экрана, который должен уменьшиться до небольшой высоты. Проблема заключается в том, что подпредставления «сворачиваются» все до нуля 0 (среди прочего) одним ударом (технически: они уменьшают свой origin.height, но не увеличивают его заново).

Ответы [ 3 ]

1 голос
/ 06 августа 2010

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

0 голосов
/ 07 августа 2010

Еще один потенциальный обходной путь (который работает в моей текущей ситуации):

Единственный вид, который у меня есть сейчас, который ДОЛЖЕН иметь ненулевое происхождение и ДОЛЖЕН изменяться по размеру, это UITableView.

Apple имеет специальную функцию, позволяющую вам помещать любое представление в качестве «заголовка таблицы».

Итак ... Я взял все остальные мои компоненты, прикрепил их к большому представлению и сделал это представление заголовка таблицы.

Недостатком является то, что теперь они прокручиваются сверху, когда вы прокручиваете таблицу, но это позволяет мне дать таблице нулевое происхождение, обходя ошибку SDK.

0 голосов
/ 06 августа 2010

РЕДАКТИРОВАТЬ: через час поведение сворачивания вернулось, я не трогал исходные файлы.Я буду использовать контроль исходного кода, чтобы перепроверить, но я верю, что все, что произошло, это то, что я добавил другие файлы в другую часть иерархии представления и пересобрал.Argh!

(что следует за SEEMED для работы, но теперь снова не получается, точно так же)

Хмм.Итак, у меня было два UIVC на одном экране.Рефакторинг, чтобы у меня был только один, сделал ошибку изменения размера исчезающей.Кажется, это ошибка в коде макета UIVC.

Примечание: у меня была идея, что это может быть проблемой, потому что я знаю, что Apple в настоящее время советует вам иметь только один UIVC на экране одновременно с iPhone, хотяэто означает, что вы должны игнорировать их архитектуру MVC для сложных приложений.Таким образом, технически они предупреждают вас об этом.Но, в то же время, теперь я не могу использовать MVC для этого кода.

Сработало следующее (для моего текущего примера - может быть не универсальным!).

КАК:

  1. Если вы добавляете какие-либо экземпляры UITableViewController ... сдавайтесь.Вам придется заново реализовать этот класс самостоятельно
  2. Найти мои подпредставления, которые были в экземплярах UIVC, и изменить расширенный класс в заголовке UIVC с "UIViewController" на "NSObject"
  3. Moveвесь код от viewDidLoad для init (помня, что у «init» есть специальные правила для первых нескольких строк и т. д.)
  4. Замените создание этого UIVC из «[[vc alloc] initWithNibName: nil bundle: nil]» наобычный "[[vc alloc] init]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...