使用API​​在iOS5上自定义TabBar

时间:2011-11-26 18:11:54

标签: cocoa-touch ios5 uitabbarcontroller customization

我尝试了适用于iOS 5的全新Customizing API,并遇到了一些我不理解的问题。我这样做的方式:

UITabBar *tabBar = [rootController tabBar];
if ([tabBar respondsToSelector:@selector(setBackgroundImage:)])
{
    [tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_bg.png"]];
    tabBar.selectionIndicatorImage = [UIImage imageNamed:@"over.png"];
    tabBar.tintColor = [UIColor colorWithRed:56.0/255.0 green:63.0/255.0 blue:74.0/255.0 alpha:1.0];
    tabBar.selectedImageTintColor = [UIColor colorWithRed:94.0/255.0 green:102.0/255.0 blue:114.0/255.0 alpha:1.0];
}

问题如下图所示:

enter image description here

边框是我的问题...只有当我尝试使用漂亮的(:P)颜色时它才会出现..如果我尝试用白色看起来像这样:

enter image description here

你有任何想法如何解决它?

1 个答案:

答案 0 :(得分:0)

如果您创建UITabBarItem的子类并实现方法

- (UIImage *)selectedImage
- (UIImage *)unselectedImage

您可以从这些图像中返回任何想要的图像,但它们不会应用任何样式效果。

从技术上讲,这些都是私有方法,但你不是在调用它们,而是在覆盖它们,而且我已经看到很多应用程序使用这种技术而不会被拒绝。

您还可以使用类别覆盖应用中所有tabbaritems的这些方法。一个好方法就是覆盖selectedImage以返回图像,如下所示:

- (UIImage *)selectedImage
{
    return self.image;
}

这样,所有标签栏项目都将使用您提供的任何图像而不对selectedImage应用任何效果,但仍将使用默认的灰色样式作为unselectedImage。请注意,这意味着您为标签栏项目提供了带有颜色的图像,而不仅仅是正常的蒙版图像。