在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尺寸,但箭头仍远离每个标签的中间位置。
任何帮助?
答案 0 :(得分:1)
尝试使用此代替当前的“horizontalLocationFor”方法:
- (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项目上只填充标签栏宽度的一部分,因此将宽度除以项目数量无法获得正确的位置。