-1

按照教程,我最终在 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 尺寸,但箭头仍然远离每个选项卡的中间。

有什么帮助吗?

4

1 回答 1

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 上,项目仅填充标签栏宽度的一部分,因此将宽度除以项目数不会让您获得正确的位置。

于 2012-07-11T14:45:44.777 回答