自定义UITabBar中的More UIBarButtonItem

Posted

技术标签:

【中文标题】自定义UITabBar中的More UIBarButtonItem【英文标题】:Customize the More UIBarButtonItem in UITabBar 【发布时间】:2012-08-27 23:08:57 【问题描述】:

ios 5 开始,Apple 提供了一个 API 来自定义 UITabBar 对象中的 UITabBarItems。我特指以下选择器:

setFinishedSelectedImage:withFinishedUnselectedImage:

这一切都适用于常规按钮,但我似乎无法自定义“更多”按钮以匹配其他按钮的样式。这就是我正在做的事情:

tabBarController.viewControllers = tabBarControllerArray;
    tabBarController.moreNavigationController.navigationBar.tintColor = [UIColor blackColor];
    UITabBarItem *more = tabBarController.moreNavigationController.tabBarItem;
     if ([more respondsToSelector:@selector(setFinishedSelectedImage:withFinishedUnselectedImage:)])
        [more setFinishedSelectedImage:[UIImage imageNamed:@"BarIcon-More.png"]
           withFinishedUnselectedImage:[UIImage imageNamed:@"BarIcon-More.png"]
         ];
     else 
        more.image = [UIImage imageNamed:@"BarIcon-More.png"];
    

结果如下,没有拾取我自定义的More图片。

我已经看到了许多替换更多按钮的技巧,但是必须有更好的方法来做到这一点吗?

【问题讨论】:

【参考方案1】:

解决方案很愚蠢。

我认为moreNavigationController 中的UITabBarItems 是只读的,但事实并非如此。所以只需执行以下操作:

tabBarController.moreNavigationController.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"More" image:[UIImage imageNamed:@"BarIcon-More.png"] tag:0];

和上面一样的自定义代码也可以工作。

【讨论】:

这似乎不适用于 iOS 6。在 more 控制器上设置 tabBarItem 属性没有任何作用。我可以在调试器检查之前和之后跨过分配行并且它不会改变。还有其他解决方案吗?

以上是关于自定义UITabBar中的More UIBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章

monotouch 中的自定义 uitabbar,类似于语音备忘录应用程序

iOS 5 中的 UITabBar 高度

具有垂直对齐图像的自定义 UITabBar

UITabBar项过多时如何自定义出现的UINavigationBar?

UITabBar 自定义背景图像应用于一个视图控制器而不是 AppDelegate

iOS之自定义UITabBar替换系统默认的(添加“+”号按钮)