2009-03-24 3 views
1

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

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

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

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

ответ

1

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

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

EDIT: Я просто заметил, что UIView имеет window свойство, которое получит вас прямо к окну зрения, так что вам не нужно ходить по иерархии в конце концов.

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

+0

вы можете легко пропустить законсервированную анимацию и катиться самостоятельно. –

+0

Оба этих ответа точны. Как отмечено в вышеприведенном комментарии, в моем случае все еще есть проблемы с использованием контроллера модального представления. – ddoughty

1

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

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

+0

Короткий ответ, что я не знал об этом. :-) Посмотрите. Благодарю. – ddoughty

+0

рад помочь! :) –

+0

Мой взгляд маленький. Представьте, что это рекламный баннер или что-то подобное. Он хочет скользить в виде, которое захватывает экран.Когда я использую presentModalViewController, модальный вид занимает экранную недвижимость моего вида, а не весь экран, что заставляет меня думать, что здесь это не подходит. – ddoughty

0

ddoughty,

Я сделал учебник, показывающий, как юность сделать вид расширяться и сжиматься, как в приложении facebook iPhone.

Надеется, что это может иметь некоторую помощь: How to make expanding/shrinking views on iPhone SDK

Адам

Смежные вопросы