适用于iPad的UITabBar箭头指示器

时间:2012-07-11 13:57:58

标签: objective-c uitabbar

this教程之后,我最终为iPhone中的UITabBar提供了一个漂亮的箭头。

现在我想为iPad做同样的事情,但似乎行不通。

我试过

- (CGFloat) horizontalLocationFor:(NSUInteger)tabIndex
{   
    CGFloat tabItemWidth;
    CGFloat halfTabItemWidth;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        tabItemWidth = 320 / tabBarController.tabBar.items.count;
        halfTabItemWidth = (tabItemWidth / 2.0) - (tabBarArrow.frame.size.width / 2.0);
    }
    else 
    {
        tabItemWidth = 768 / tabBarController.tabBar.items.count;
        halfTabItemWidth = (tabItemWidth / 2) - (tabBarArrow.frame.size.width / 2);
    }

    return (tabIndex * tabItemWidth) + halfTabItemWidth;
}

按照示例,取iPad的tabBar尺寸,但箭头仍远离每个标签的中间位置。

任何帮助?

1 个答案:

答案 0 :(得分:1)

尝试使用此代替当前的“horizo​​ntalLocationFor”方法:

- (CGFloat) horizontalLocationFor:(NSUInteger)tabIndex
{
    // Get the frame of the selected tab item's view.
    // Add one becuase the first subview is the not a button.
    CGRect tabFrame = [[[[[self tabBarController] tabBar] subviews] objectAtIndex:tabIndex+1] frame];

    // Add tab x to half tab width and substract hald arrow image width to center it.
    return tabFrame.origin.x + (tabFrame.size.width * .5) - (tabBarArrow.frame.size.width * .5);
}

原始解决方案假设标签栏宽度是整个屏幕,但在ipad 4项目上只填充标签栏宽度的一部分,因此将宽度除以项目数量无法获得正确的位置。