Cocoa touch 使用API在iOS5上自定义选项卡栏

Cocoa touch 使用API在iOS5上自定义选项卡栏,cocoa-touch,ios5,uitabbarcontroller,customization,Cocoa Touch,Ios5,Uitabbarcontroller,Customization,我尝试了新的iOS 5定制API,但遇到了一些我不理解的问题。我的做法是: UITabBar *tabBar = [rootController tabBar]; if ([tabBar respondsToSelector:@selector(setBackgroundImage:)]) { [tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_bg.png"]]; tabBar.selectionIndicatorIm

我尝试了新的iOS 5定制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];
}
问题如下图所示:

边界是我的问题。。。只有当我试着用漂亮的(:P)颜色时才会发生。。如果我用白色试一下,它看起来是这样的:

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


你知道如何修复它吗?

如果你创建了uitabaritem的子类并实现了这些方法

- (UIImage *)selectedImage
- (UIImage *)unselectedImage
你可以从这些图片中返回你想要的任何图片,它们不会应用任何样式效果

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

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

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

这样,所有选项卡栏项目都将使用您提供的任何图像,而不会对选定的图像应用任何效果,但对未选定的图像仍将使用默认的灰色样式。请注意,这意味着您为选项卡栏项目提供带有颜色的图像,而不仅仅是正常的遮罩图像。

没有人有答案吗?:(