iPhone: замена UIView на себя (сброс настроек) - PullRequest
0 голосов
/ 29 января 2012

У меня есть UIView, который представляет игровой экран.У меня есть кнопка сброса, позволяющая пользователям воспроизводить этот уровень.Хотя для сброса я хочу сбросить ВСЕ элементы управления пользовательским интерфейсом до их состояния по умолчанию, так как после завершения происходят различные анимации, которые затухают / вводят текст, перемещаются вокруг изображений и т. Д.

Что я хотел бы сделать, это заменить существующиеUIView с другой копией себя (с анимацией).Как я могу сделать это, не нарушая стек UINavigation?Когда пользователь нажимает обратно на новый экран, я хочу, чтобы он перешел к исходному родителю UIView, а не к экрану игры, который был заменен.

Ответы [ 3 ]

0 голосов
/ 29 января 2012

Наверху вашего стека контроллеров у вас, предположительно, есть контроллер, который «владеет видом игры»?

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

Если это так, то вы сможете выделить, инициировать еще один экземпляр вашего игрового вида, который будет в состоянии по умолчанию.Установите его альфа на 0.0f и добавьте его в иерархию представления, затем анимируйте его альфа на 1.0f и в блоке завершения анимации удалите и отпустите проданный вид, который вам больше не нужен.начальные условия, позиции, значения и т. д., а затем просто анимируйте их обратно при нажатии кнопки.

Надеюсь, это поможет:)

0 голосов
/ 29 января 2012

Полагаю, у вас есть код для инициализации всех ваших подпредставлений и членов, связанных с игрой, верно?

переместите этот код в отдельный метод и попросите кнопку сброса вызвать метод.

У меня обычно есть метод -setupSubviews в каждом пользовательском представлении, которое я создаю, и я вызываю его каждый раз, когда мне нужно сбросить свое представление в исходное состояние, например:

- (void)setupSubviews
{
    _titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    [self addSubview:_titleLabel];

    _activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectZero];
    _activityIndicator.hidesWhenStopped = YES;
    [self addSubview:_activityIndicator];

    _loading = NO;
}
0 голосов
/ 29 января 2012

Я делаю нечто подобное, используя вид маски.

  1. Создание вида маски, UIView, установленного в качестве начального вида (или просто изображения).
  2. Анимация перехода из вида игры в вид маски.
  3. Сброс настроек игры.
  4. Снимите вид маски, показывая вид игры.

При этом ваш стек UINavigation не будет сломан, потому что вы фактически используете только один активный вид (игровой вид) и статическую маску, чтобы скрыть свой вид для перехода.

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