Настраиваемая панель вкладок для iPhone изменяет портрет вкладок в альбомную ориентацию - PullRequest
5 голосов
/ 14 марта 2011

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

Например, пользователь держит iphone вертикально = 3 вкладки (a, b, c), но пользователь переворачивает телефон на бок, и теперь панель вкладок заполняется 2 вкладками (d, e), которые выровнены / вниз в левой части экрана, чтобы пользователь мог их прочитать.

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

1) как мне это сделать?

2) вызывает ли моя собственная панель вкладок проблемы при отправке приложения в App Store?

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Я думаю, что реализация того, что вы описываете, не должна быть проблемой для магазина приложений, если ваша реализация не сбивает с толку и не нарушает стандартное поведение панели вкладок. Другими словами, если он выглядит как стандартный элемент управления Apple или похож на него, он должен функционировать очень похожим образом и не действовать «сломанным» для пользователя, который знаком с панелями вкладок. Apple do позволит вам проявить некоторую свободу действий и креативность с элементами управления пользовательским интерфейсом, если вы немного осторожны, чтобы не запутать или не раздражать пользователя.

Что касается вашей реализации, то подклассификация UITabBarController не будет очень хорошим подходом, я согласен. Чтобы реализовать свою пользовательскую панель вкладок, возьмите лист из книги Apple и напишите подкласс UIViewController, который реализует то, что вы описываете, основываясь на том, как работает UITabBarController (но в любом случае избегайте использования UITabBarController от Apple).

Ваш CustomTabBarController (давайте назовем его так для удобства) должен в основном брать коллекцию UIViewControllers, значки и текстовые описания для элементов как в альбомном, так и в портретном режиме. Вам нужно будет обнаружить события вращения в вашем CustomTabBarController и передать их фактическому UIViewController, отображаемому в данный момент, - и будет другая проводка, например, передача сообщений viewDidAppear и т. Д.

Хорошим источником вдохновения и подсказок может быть рассмотрение реализации агрегаторами UIViewController других людей. Например:

http://mattgemmell.com/2010/07/31/mgsplitviewcontroller-for-ipad

0 голосов
/ 15 марта 2011

Отличный совет!К сожалению, я не доверяю себе, чтобы все это реализовывать правильно ... Я только кодировал объективно - c в течение 6 месяцев.сейчас.То, что я нашел и успешно использовал, который, я думаю, другие могут найти полезным, это следующая ссылка:

http://idevrecipes.com/2010/12/17/twitter-app-tab-bar-animation/

Ребята здесь используют собственную панель вкладок, что очень приятносам.Это позволяет мне на лету редактировать количество кнопок, присутствующих на самой панели, а также изображения, соответствующие этим кнопкам, и высоту самой панели вкладок.Кроме того, я использовал прослушиватель уведомлений для класса View Controller, который содержит панель вкладок, чтобы сообщить, когда пользователь переворачивает iphone.При переворачивании я настраиваю панель вкладок по-другому и перезагружаю ее новыми элементами / контроллерами представления.

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];

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

Спасибо за ваш совет.Если бы я был немного смелее, я бы сам попробовал написать код для пользовательской панели вкладок!

...