Каков наилучший способ добавить пользовательскую центральную кнопку на панель вкладок? - PullRequest
4 голосов
/ 23 сентября 2011

Многие приложения имеют стандартную панель вкладок с пользовательской кнопкой в ​​центре, которая выполняет некоторые специальные функции.Некоторые примеры можно найти здесь:

http://mobile -patterns.com / custom-tab-navigation

Каков наилучший способ реализации этого?

Ответы [ 2 ]

11 голосов
/ 23 сентября 2011

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

UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[button setBackgroundImage:highlightImage forState:UIControlStateHighlighted];

CGFloat heightDifference = buttonImage.size.height - self.tabBar.frame.size.height;
if (heightDifference < 0)
    button.center = self.tabBar.center;
else
{
    CGPoint center = self.tabBar.center;
    center.y = center.y - heightDifference/2.0;
    button.center = center;
}

[self.view addSubview:button];

Надеюсь, это поможет

8 голосов
/ 23 сентября 2011

Я получил код Фрэнсисо, работающий с несколькими незначительными изменениями.Я поместил код в приложение didFinishLaunchingWithOptions стандартного шаблона приложения панели вкладок в Xcode 4.1.Я считаю, что Xcode 4.2 может иметь другой шаблон.

UIImage *buttonImage = [UIImage imageNamed:@"tabItemOff.png"];
UIImage *highlightImage = [UIImage imageNamed:@"tabItemSelected.png"];
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0.0, 0.0, buttonImage.size.width, buttonImage.size.height);
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[button setBackgroundImage:highlightImage forState:UIControlStateHighlighted];
CGFloat heightDifference = buttonImage.size.height - self.tabBarController.tabBar.frame.size.height;
if (heightDifference < 0)
    button.center = self.tabBarController.tabBar.center;
else
{
    CGPoint center = self.tabBarController.tabBar.center;
    center.y = center.y - heightDifference/2.0;
    button.center = center;
}
[self.tabBarController.view addSubview:button];
...