在tabbarcontroller应用程序中,所有取消选择的图像选项卡都是灰色,我想将其更改为白色。
任何帮助都会感激!
答案 0 :(得分:4)
您需要构建自己的控制器。根据关于此问题的Apple文档“此类[UITabBarController]不用于子类化”。 UITabBarItem上的文档说明当您为标签栏提供图像时“标签栏上显示的图像来自此图像”。因此,无论您提供给标签栏的任何图像都会被操纵,以使其符合标签栏图像的“正常”外观。
因此,您可以使用一些UIButtons构建一个UIViewController作为子视图,然后以这种方式管理整个外观。
恕我直言,这似乎是为了获得很多收益而做的很多工作。答案 1 :(得分:0)
查看https://github.com/xhan/PlutoLand并运行它。
你可以找到一个自定义PLTabBarController
类,它允许你在那里自定义TabBarItems。
答案 2 :(得分:0)
您可以从UITabBar继承并覆盖drawRect方法。下面是一个如何用棕色着色的样本
- (void)drawRect:(CGRect)rect
{
// Drawing code
float baseComponents[] = { 78 / 255.0, 30 / 255.0, 0/ 255.0, 1.0 };
// Get current context
CGContextRef context = UIGraphicsGetCurrentContext();
// Fill full rectangle
CGContextSetRGBFillColor(context, baseComponents[0], baseComponents[1], baseComponents[2], baseComponents[3]);
CGContextFillRect(context,rect);
// Draw light line on top
CGContextSetRGBStrokeColor(context, baseComponents[0] + (67/255.0), baseComponents[1] + (67/255.0), baseComponents[2] + (67/255.0), baseComponents[3]);
CGContextMoveToPoint(context, 0, 1);
CGPoint points[] = { CGPointMake(0,1.5),CGPointMake(rect.size.width,1.5) };
CGContextStrokeLineSegments(context, points , 2);
// Create gradient
CGColorSpaceRef myColorspace;
CGGradientRef myGradient;
size_t num_locations = 2;
CGFloat locations[2] = { 0.0, 1.0 };
CGFloat components[8] = { baseComponents[0] + (46/255.0), baseComponents[1] + (46/255.0), baseComponents[2] + (46/255.0), baseComponents[3], // Start color
baseComponents[0] + (21/255.0), baseComponents[1] + (21/255.0), baseComponents[2] + (21/255.0), baseComponents[3] }; // End color
myColorspace = CGColorSpaceCreateDeviceRGB();
myGradient = CGGradientCreateWithColorComponents (myColorspace, components,locations, num_locations);
// Draw gradient
CGContextDrawLinearGradient(context, myGradient, CGPointMake(0, 2), CGPointMake(0,rect.size.height/2), 0);
// Clean up
CGColorSpaceRelease(myColorspace);
CGGradientRelease(myGradient);
}
在Interface Builder中,在Identity Inspector中为UITabBarController的TabBar设置自定义类。