iOS 5 Сохраняйте согласованную панель вкладок в нескольких сценах - PullRequest
2 голосов
/ 05 декабря 2011

Я разрабатываю свой первый продукт Apple на iOS 5. Каков наилучший способ поддерживать согласованный объект UITabBar в нескольких сценах, когда я не с помощью UITabBarController? Это просто стандартный UIViewController. У меня есть панель вкладок, работающая так же, как я хочу, чтобы она была в одной сцене, и я хочу иметь возможность дублировать ее для других моих 4-х сцен.

Ответы [ 6 ]

1 голос
/ 14 декабря 2011

Я думаю, этот инновационный ответ пригодится вам
Физическая кнопка

1 голос
/ 08 декабря 2011

Используйте API UIAppearance, чтобы установить визуальные свойства для всех UITabBar экземпляров.

id appearance = [UITabBar appearance];
[appearance setBackgroundImage:someImage];
[appearance setTintColor:someTintColor];
//...

Здесь список свойств, которыеможет быть установлен на UITabBar s UIAppearance прокси:

0 голосов
/ 09 декабря 2011

Это не стандартный способ, но если вы действительно хотите предоставить функциональность tabBar в своем приложении без использования tabBar.

Создайте 4-5 пользовательских кнопок (с изображениями) внизу каждого представления (размер 199 X 49), чтобы он полностью занимал нижнюю часть представления (например, tabBar). Дайте только одну из кнопок действий в одном представлении, все остальные отключены.Также функция кнопки, которую вы даете, должна изменить изображение, чтобы показать, что нажата текущая вкладка.

0 голосов
/ 09 декабря 2011

Что вы можете сделать, это использовать представление, чтобы обернуть содержимое, которое вы хотите, чтобы оно было динамичным Затем вы можете добавить первый видимый вид как подпредставление этого представления. Затем вам нужно будет анимировать переход между представлениями (текущим и тем, на который вы хотите изменить) для имитации смены контроллера представления. Вот код, который я использовал, который делает это между двумя представлениями. Мой вид "оболочки" называется представлением содержимого. Вам нужно интегрировать это с тем, какую панель вкладок вы настроили ...

[ contentView addSubview:view2 ];
[ view1 removeFromSuperview ];

CATransition *animation = [ CATransition animation ];

[ animation setType:kCATransitionPush ];
[ animation setSubtype:kCATransitionFromRight ];
[ animation setDuration:0.5 ];
[ animation 
 setTimingFunction:[ CAMediaTimingFunction
                    functionWithName:kCAMediaTimingFunctionEaseInEaseOut
  ]
 ];

[[ contentView layer ]
 addAnimation:animation
 forKey:@"currentTransition"
 ];

Попробуйте!

0 голосов
/ 08 декабря 2011

Это очень просто и легко сделать (я сделал это в нескольких приложениях).

  1. Создать приложение на основе представления.Давайте назовем один VC, созданный таким образом, как «MainViewController».
  2. Создайте верхнюю панель с изображениями, кнопками и тем, что у вас есть в MainViewController.xib.Установите цвет фона верхнего уровня UIView как «Clear Color».
  3. Не добавляйте ничего больше к этому xib.
  4. Создайте контроллеры представления и Xibs для всех представлений, которые вам нужно показать (в том числе начальный / первый вид).Давайте назовем их MyViewController1 & MyViewController2.
  5. Пусть MainViewController имеет "имеет" связь с MyViewController1.Значение MainViewController будет иметь переменную / свойство элемента типа MyViewController1.
  6. То же самое для MyViewController2.
  7. Создание экземпляров MyViewController1 & 2 в методе "viewDidLoad" MainViewController.
  8. Добавить ихкак подпредставления MainViewController.
  9. Добавьте скрытое свойство к NO для начального представления (возможно, MyViewController1) и YES для другого.
  10. На этом этапе вы увидите верхнюю панельMainViewController и представления MyViewController1 под ним.
  11. Когда вам нужно переключиться на MyViewController2, просто установите для его скрытого свойства значение NO, а для скрытого свойства MyViewController1 - YES.
  12. Если вы хотитекак для анимации перехода от MyViewController1 к MyViewController2, добавьте CABasicAnimation / CATransition для CALayers в MyViewController1 & MyViewController2 (а не в MainViewController).Тогда ваша верхняя панель (нарисованная на MainViewController) будет оставаться стабильно стабильной, а MyViewController1 & 2 будет переключаться / анимироваться под ней.
  13. Если, тем не менее, вы хотите, чтобы верхняя панель исчезла, ановую верхнюю панель, которая будет отображаться вместе со следующим представлением, просто присоедините CATransition / CAAnimation и т. д. к CALayer MainViewController.

Не стесняйтесь задавать любые вопросы.

0 голосов
/ 08 декабря 2011

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

...