iPhone Замена содержимого UIView / Sub view - PullRequest
3 голосов
/ 17 февраля 2010

Я пытаюсь сделать следующее:

Замена содержимого UIView или Subview с помощью кнопок UIB или панели инструментов. У меня есть представление, как показано на рисунке ниже. Я хочу обменять содержимое вложенного представления «UIView to swap», нажимая кнопки или кнопки на панели инструментов. Таким образом, вы нажимаете кнопку 1, и представление загружается в «UIView для обмена». Имеет ли это смысл? Кто-нибудь может предложить какие-нибудь учебники? Я знаю, как сделать это с изображениями, но я хочу поменять местами более сложные представления.

альтернативный текст http://yesimarobot.com/images/swap-uiviews.png

Ответы [ 4 ]

2 голосов
/ 17 февраля 2010

Вы можете сделать это очень легко. Вот что я бы сделал:

1) Создайте UIView для хранения поменявшихся представлений. Это должен быть размер и расположение UIView, чтобы поменять местами изображение. Я буду называть его контейнером.

2) Создайте свои четыре UIViews, между которыми вы хотите поменяться местами. Поместите их в NSArray. Я назову это viewArray

3) Подключите ваши кнопки к методу IBAction. Этот метод должен выяснить индекс нажатой кнопки (по имени или тегу), удалить все подпредставления контейнера, добавить подпредставление [viewArray objectAtIndex: myIndexFromButton] в контейнер.

4) Вы сделали. Очевидно, что вы можете создавать представления по требованию, а не кэшировать их, если хотите, но это общая идея.

1 голос
/ 25 января 2011

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

Создайте CATransition с нужной анимацией (например, исчезновение, нажатие, перемещение и т. Д.). Добавьте переход к слою представления контейнера.

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

CATransition будет выглядеть примерно так:

// Create a transition
CATransition *transition = [CATransition animation];
transition.duration = 0.25f;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromRight;
transition.delegate = self; 

// Add the transition to the content view's layer
[self.view.layer addAnimation:transition forKey:nil];
0 голосов
/ 25 января 2011

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

(Вы по сути заново изобретаете UITabBarController от Apple, который тоже использует viewcontroller)

0 голосов
/ 17 февраля 2010

Имеет смысл. Как насчет использования метода UIView replaceSubview:with: для этого?

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

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