Лучший способ временно расширить вид, чтобы заполнить экран iPhone - PullRequest
1 голос
/ 24 марта 2009

У меня есть библиотека, которая программно создает UIView, который демонстрирует мое пользовательское поведение. Эта библиотека может быть помещена во множество различных приложений в разных местах иерархии представления. При определенных обстоятельствах представление необходимо «расширить», чтобы заполнить экран недвижимостью. В настоящее время я делаю это, заставляя мой код обходить иерархию представления, пока не найду представление без родителя, создаю новое представление и вставлю его как подпредставление этого найденного представления, а затем выполню анимированный переход между ними. Выход из этого нового представления - просто вопрос его сокрытия, который восстанавливает предыдущее состояние.

У меня два вопроса.

  1. Есть ли лучший способ сделать это? (В частности, мне не очень нравится обходить иерархию представлений таким образом.)
  2. Какие плохие вещи могут случиться с этим подходом? Например, одна вещь, которая может пойти не так, заключается в том, что ранее отображавшееся представление не знает, что это произошло, и, следовательно, может работать неправильно. (Эту проблему можно решить, придумав протокол делегирования для такого поведения или используя существующий протокол, о котором я в данный момент не знаю.)

Цель здесь, очевидно, состоит в том, чтобы содержащее приложение / представление / контроллер должно было сделать как можно меньше, за исключением создания прямоугольника и построения контроллера моего представления.

Ответы [ 3 ]

1 голос
/ 24 марта 2009

Эндрю, я бы предположил, что он этого не делает, потому что ему не нужна анимация скольжения.

Представление верхнего уровня - это окно UIWindow; Вы можете получить ключ (текущее) окно, позвонив [UIApplication sharedApplication].keyWindow. (Почти во всех приложениях есть только одно окно.) Кроме этого, обход иерархии представлений совершенно законен.

РЕДАКТИРОВАТЬ : Я только что заметил, что в UIView есть свойство window, которое приведет вас прямо к окну представления, так что вам не нужно обходить иерархию.

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

1 голос
/ 24 марта 2009

Почему бы просто не вызвать presentModalViewController? По умолчанию это анимация на экране снизу, но вы можете предотвратить это, передав NO в качестве опции анимации, а затем управляя своим собственным.

Это разработанный способ для представления / контроллера / приложения временно передать управление пользовательским интерфейсом другому модулю.

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

ddoughty,

Я создал учебник для YouTube, в котором показано, как увеличивать и уменьшать представления, как в приложении для iPhone на Facebook.

Надеюсь, что это может помочь: Как сделать расширение / сжатие представлений на iPhone SDK

Адам

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