В приложении tabbarcontroller все вкладки с невыбранным изображением имеют серый цвет, я хочу изменить его на белый.Как изменить по умолчанию серый цвет uitabbaritem в uitabbarcontroller?
любая помощь будет оценена!
В приложении tabbarcontroller все вкладки с невыбранным изображением имеют серый цвет, я хочу изменить его на белый.Как изменить по умолчанию серый цвет uitabbaritem в uitabbarcontroller?
любая помощь будет оценена!
Вам необходимо будет создать собственный контроллер. В документах Apple по этому вопросу «Этот класс [UITabBarController] не предназначен для подкласса». Документы на UITabBarItem говорят, что при поставке изображения для панели вкладок «Изображения, отображаемые на панели вкладок, получены из этого изображения». Таким образом, любое изображение, которое вы предоставляете на панели вкладок, получит управление, чтобы оно соответствовало «нормальному» виду изображения на панели вкладок.
Итак, вы можете создать UIViewController с некоторыми UIButtons в качестве подзонов, а затем управлять всем внешним видом и чувствовать себя таким образом.
ИМХО, это похоже на большую работу за некую выгоду.
проверить https://github.com/xhan/PlutoLand и запустить его.
вы можете найти пользовательский класс PLTabBarController
, который позволяет вам настраивать свои TabBarItems.
Вы можете наследовать от 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 настроить свой собственный класс для TabBar из UITabBarController в идентичности инспектора.