2010-02-16 3 views
1

'lo all.Как создать слой, который плавает над tabbarcontroller на iphone

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

Несколько вопросов. Это навигационное приложение (просто так вы знаете). Я хочу плавать (например) 40px high, 80 (или около того) пикселей полупрозрачного черного (возможно, alpha .6) ящика с закругленными углами в левом нижнем углу экрана над вкладкой. Я хочу, чтобы он мог появляться по требованию (когда диспетчер местоположений вызывается) и исчезает, когда я останавливаю диспетчер местоположения - НО ПЛАНИРУЙТЕ ПО ПРИЛОЖЕНИЮ НА ВСЕ ВИДЕ ПРОСМОТРА приложения и НЕ блокирует касания, когда пользователь переходит через приложение. Это все возможно? И если да, то как? Код был бы лучше, но я не прошу о начале решения.

я просто не «получить» следующее:

  • Я не понимаю, если я могу плавать коробку над всеми видами приложения в любое время.
  • С чего начать ... какой «объект» я использую для его создания? CALayer? CGRect? Я хочу сказать (например) «Точность: 10» (и иметь цвета смены номера ... не знаю, ограничивает ли это меня объектом, на который я могу его надеть.
  • НЕ МОЖЕТ блокировать штрихи. LIKE сделать это так, чтобы он оставался плавающим над приложением, когда пользователь коснулся экрана и изменил вид.

Все это возможно, и если да, может кто-нибудь дать мне хорошую отправную точку? У меня есть все программирование, необходимое для получения значений менеджера местоположений ... но не знаю, как разместить представление над другими представлениями, не вытесняя других с экрана ... ИЛИ что-то вроде этого ... которое блокирует и является AlertView .. не элемент, который мне нужен:

// this is not the answer for what I need 
baseAlert = [[[UIAlertView alloc] initWithTitle:@"One Moment" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles: nil] autorelease]; 
[baseAlert show]; 
// Create and add the activity indicator 
UIActivityIndicatorView *aiv = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
aiv.center = CGPointMake(baseAlert.bounds.size.width/2.0f, baseAlert.bounds.size.height - 40.0f); 
[aiv startAnimating]; 
[baseAlert addSubview:aiv]; 
[aiv release]; 

Идеальная вещь для меня была бы (и я не знаю, если это можно сделать), панель состояния «вернуться к вызову» зеленого стиля, которую яблоко ставит, когда вы находитесь на вызове под панелью состояния iPhone. Я знаю, что это не доступно для программистов.

В любом случае, любая помощь будет оценена по достоинству. Thx заранее.

ответ

1

Вы должны иметь возможность создать UIView и добавить его в основное окно в качестве подзаголовка.

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

+0

Thx ... но когда у меня есть контроллер навигации, переключитесь на экран (щелкнув пользователем на вкладке), что uiview уйдет, я прав? Мне нужно будет проверить новый вид (который пользователь посетил) и посмотреть, должен ли я повторно отображать этот uiview, содержащий текст «Точность: 10»? – Jann

+0

Если вы добавите представление в главное окно, оно не исчезнет. Контроллер навигации переключает представления, которые являются дочерними элементами окна. Мое предложение состоит в том, чтобы второй ребенок окна был вашим предупреждающим полем. – pgb

+0

Я сделал это, pgb, и он отлично работает! Приложение в настоящее время находится на рассмотрении для продажи - СПАСИБО! Без вашей помощи это было бы невозможно. – Jann