Добавление постоянного UIView с помощью UITabBarController - PullRequest
6 голосов
/ 17 марта 2011

У меня есть приложение, использующее UITabBarController, и у меня есть другое представление, которое должно скользить вверх из-за элементов управления панели вкладок, но перед содержимым панели вкладок.Если это неясно, представьте себе рекламу, которая появляется в приложении с вкладками, которое появляется перед всем, кроме кнопок панели вкладок.

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

tabBarController.viewControllers = [NSArray arrayWithObjects:locationNavController, emergencyNavController, finderNavController, newsNavController, nil]; 

aboutView = [[AboutView alloc] initWithFrame:CGRectMake(0, window.frame.size.height - tabBarController.tabBar.frame.size.height - 37 ,
                                                        320, window.frame.size.height - tabBarController.tabBar.frame.size.height)];


[window addSubview:tabBarController.view];    // adds the tab bar's view property to the window
[window addSubview:aboutView]; // this is the view that slides in
[window makeKeyAndVisible];

В настоящее время aboutView является подклассом UIView и находится в своей начальной позиции внизу, но скрывает tabBarController.Как я могу изменить это, чтобы вкладки были наверху, но все еще имели aboutView перед другим контентом?

1 Ответ

2 голосов
/ 17 марта 2011

Вам необходимо добавить aboutView как подпредставление представления в текущем активном контроллере представления в UITableBarController . Вы можете получить доступ к этому представлению через свойство selectedViewController .

Вы можете добавить код в свою реализацию aboutView для анимации представления, когда оно появляется.

Я делаю что-то подобное во всплывающем окне, которое хочу отображать под элементами управления панели вкладок. Вы можете добавить некоторый код в сообщение didMoveToSuperview о реализации aboutView:

- (void)didMoveToSuperview
{
    CGRect currentFrame = self.frame;

    // animate the frame ... this just moves the view up a 10 pixels. You will want to
    // slide the view all the way to the top
    CGRect targetFrame = CGRectOffset(currentFrame, 0, -10);

    // start the animation block and set the offset
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5]; // animation duration in seconds
    [UIView setAnimationDelegate:self];

    self.frame = targetFrame;

    [UIView commitAnimations];  
}

Таким образом, когда ваш aboutView добавляется в представление выбранного контроллера представления, он автоматически оживляется.

...