2011-01-05 26 views

Antwort

4

Sie müssen Ihren eigenen Controller bauen. Laut Apple-Dokumentation zum Thema "Diese Klasse [UITabBarController] ist nicht für Unterklassen gedacht". Die Dokumente auf dem UITabBarItem sagen, dass wenn Sie ein Bild für die Tab-Leiste liefern "Die Bilder in der Tab-Leiste sind von diesem Bild abgeleitet". Daher wird jedes Bild, das Sie der Tableiste zur Verfügung stellen, manipuliert, damit es dem "normalen" Aussehen eines Tab-Bar-Bildes entspricht.

So können Sie einen UIViewController mit einigen UIButtons als Subviews erstellen und dann das gesamte Look and Feel auf diese Weise verwalten.

IMHO scheint dies eine Menge Arbeit für nicht viel Gewinn.

0

überprüfen Sie https://github.com/xhan/PlutoLand und führen Sie es aus.

können Sie eine benutzerdefinierte PLTabBarController Klasse finden, mit der Sie Ihre TabBarItems dort anpassen können.

0

Sie können von UITabBar erben und die drawRect-Methode überschreiben. Unten ist ein Beispiel, wie es in braun

- (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); 

} 

als im Interface Builder Set für TabBar- von UITabBarController in Identity Inspector benutzerdefinierte Klasse gefärbt ist.

Verwandte Themen