2011-01-05 5 views

ответ

4

Вам необходимо будет создать собственный контроллер. В документах Apple по этому вопросу «Этот класс [UITabBarController] не предназначен для подкласса». Документы на UITabBarItem говорят, что при поставке изображения для панели вкладок «Изображения, отображаемые на панели вкладок, получены из этого изображения». Таким образом, любое изображение, которое вы предоставляете на панели вкладок, получит управление, чтобы оно соответствовало «нормальному» виду изображения на панели вкладок.

Итак, вы можете создать UIViewController с некоторыми UIButtons в качестве подзонов, а затем управлять всем внешним видом и чувствовать себя таким образом.

ИМХО, это похоже на большую работу за некую выгоду.

0

проверить https://github.com/xhan/PlutoLand и запустить его.

вы можете найти пользовательский класс PLTabBarController, который позволяет вам настраивать свои TabBarItems.

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 настроить свой собственный класс для TabBar из UITabBarController в идентичности инспектора.

Смежные вопросы