Festlegen eines Hintergrundbildes für eine Tableiste

7

Ich versuche, das Hintergrundbild für eine Registerkarte in meiner App programmgesteuert festzulegen. Mein Code ist wie folgt:

RootViewController.h

%Vor%

RootViewController.m

%Vor%

Das funktioniert nicht für mich.

AKTUALISIEREN

UPDATE 23. Januar 2012

Ok, ich habe ein bisschen Fortschritte gemacht. Dies funktioniert erst, seit ich auf Xcode 4.2 und IOS5 aktualisiert habe. Ich habe es mit den Optionen im Interface Builder zurückbekommen, aber jetzt funktioniert es nur noch für IOS5. Idealerweise hätte ich gerne programmatisch gearbeitet, aber ich werde mich vorerst für die IB Lösung entscheiden.

Ich kann es einfach nicht für frühere Releases funktionieren lassen.

HINWEIS: Meine TabBar befindet sich nur auf meinem RootViewController, dem Hauptbildschirm meiner App.

Wenn ich den Code, den Nithin vorgeschlagen hat, im Idealfall hätte, wäre das großartig:

%Vor%

Jede Hilfe wäre willkommen.

Grüße, Stephen

    
Stephen 18.01.2012, 11:32
quelle

12 Antworten

14

Sie können eine benutzerdefinierte Klasse für UITabBarController & amp; überschreiben Sie Ihre tabBarController. Dort können Sie Ihre gewünschten Tasten & amp; ihre Aktionen mit Bild.

So kann Ihre benutzerdefinierte Tab-Controller-Klasse aussehen:

// CustomTabBarController.h

%Vor%

// CustomTabBarController.m

%Vor%

Hoffe, das wird dir sehr helfen.

    
Erfan 26.01.2012, 16:41
quelle
6
%Vor%     
nithin 18.01.2012 11:43
quelle
3

Sie müssen dies bedingt durch die Betriebssystemversion codieren.

Wenn Sie nur iOS 5 unterstützen, können Sie einfach die Eigenschaft backgroundImage der Registerkarte verwenden. Wenn Sie iOS-Versionen unter 5 unterstützen müssen, sollten Sie einen bedingten Code hinzufügen, der ihn "hackt". Es gibt mehrere Ansätze, um das zu tun, hier ist eines:

Benutzerdefiniertes Tab-Hintergrundbild - in iOS 4.x

    
lxt 18.01.2012 11:40
quelle
2

Entnommen aus: Ссылка

%Vor%     
MarkP 25.10.2013 12:21
quelle
1

Wie bereits auf iOS 5 erwähnt, würde ich vorschlagen, dass Sie das Hintergrundbild verwenden:

%Vor%

Verwenden Sie immer einen Check wie respondsToSelector anstelle der expliziten Versionsprüfung. Dies führt zu einem sicheren und zukunftssicheren Code.

Unter iOS 4 würde ich vorschlagen, dass Sie die Methode -[UITabBar drawRect:] verwenden, vorzugsweise in einer Unterklasse. Setzen Sie dann in Interface Builder die benutzerdefinierte Klasse UITabBarController s UITabBar (normalerweise in MainWindow.xib) auf Ihre benutzerdefinierte Unterklasse.

Wenn Sie jedoch keine MainWindow.xib verwenden und wie die Codevorlagen für iOS 5 Ihre UITabBarController im Code generieren, können Sie die Methode drawRect: nur mit einer Kategorie in UITabBar überschreiben.

%Vor%

Dies funktioniert nur auf Systemen iOS 4.x und früher, aber das ist in Ordnung, weil wir bereits iOS 5 behandelt haben.

    
Joris Kluivers 01.02.2012 08:04
quelle
1

Sie müssen nur jeden Fall identifizieren und die Version mit -respondToSelector überprüfen, wie Vinodh sagte. Ich empfehle Ihnen, eine Kategorie auf UITabBar zu erstellen und es einfach zu machen. Also wird der Code diese Form haben:

%Vor%

Und die .m-Datei:

%Vor%

Das -drawLayer:inContext zeichnet das Hintergrundbild schnell.

    
TheGreenFlag1 30.01.2013 14:13
quelle
1

Wie ich oben geantwortet habe, ist es ohne Hinzufügen von UIView möglich, das Hintergrundbild zu einer UITabBar hinzuzufügen, ein Bild, das verschwinden könnte, wenn Sie [tabBar setNeedsDisplay] aufrufen, also dachte ich mir, das Bild in -drawLayer:layer inContext:ctx ( -drawInRect:rect ) zu zeichnen. wird nicht genannt). Wenn Sie jedoch vermeiden können, [tabBar setNeedsDisplay] aufzurufen, gibt es eine einfache Möglichkeit:

%Vor%     
TheGreenFlag1 31.01.2013 12:24
quelle
0

Nehmen Sie eine benutzerdefinierte Ansicht und fügen Sie sie in der UITaB-Leiste hinzu. Fügen Sie nun die Schaltfläche in dieser Ansicht hinzu und stellen Sie eine Methodenverknüpfung mit den Tab-Bar-Schaltflächen bereit. Jetzt können Sie alles tun, indem Sie Bilder oder andere Dinge hinzufügen. Es funktioniert wie benutzerdefinierte Tab-Leiste.

    
Madhu 18.01.2012 11:37
quelle
0

Ich habe in der Vergangenheit meinen eigenen TabbarController erstellt, um verschiedene UIViewControllers zu laden. Mit diesem Controller kann ich das Aussehen der Tabbar- und Tabbar-Elemente manipulieren.

Das funktioniert bei mir gut, aber es ist zunächst ein bisschen Arbeit. Weil Sie UITabBarController "simulieren" müssen, da Sie nicht die 'native' UITabBar

verwenden     
basvk 25.01.2012 13:40
quelle
0
%Vor%     
Piyush Kashyap 30.01.2012 13:42
quelle
0
%Vor%     
Vinodh 01.02.2012 06:19
quelle
0
%Vor%     
Blackberry 28.08.2013 07:06
quelle

Tags und Links