UITabBar transparent machen (iOS7)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UITabBar transparent machen (iOS7)

    Heyhoo!

    Ich hätte da mal eine kleine Frage, es geht um eine iOS7 Anwendung, die eine UITabBar hat und der UITabBarController etc. wird im InterfaceBuilder mit Storyboards gemacht. Was nun Ziel ist, eine transparentere Tabbar zu schaffen. Der Designer hätte sie gern mehr transparent, um die Farbe darunter mehr durchscheinen zu lassen.
    Jetzt hatte ich gleich mal ein wenig probiert, aber ich bekomme das über Code nicht hin. Eine UITabBar Subclass wird vom Storyboard gar nicht angesprochen, wie es aussieht.
    Gibt es da einen einfachen Weg? Geht das evtl. über Bilder?

    Hatte auf die Schnelle jetzt keine brauchbare Lösung ergooglen können…
    Vielleicht wisst ihr ja was.


    Gruß
    Jan
  • Du musst eine Unterklasse von UITabBar erstellen und diese im Identitätsinspektor der Tabbar des Tabbar-Controllers zuweisen. In der Unterklasse implementierst Du eine leere drawRect:-Methode und der Tabbar weist Du per Code [UIColor clearColor]; als Hintergrundfarbe zu.
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    Du musst eine Unterklasse von UITabBar erstellen und diese im Identitätsinspektor der Tabbar des Tabbar-Controllers zuweisen. In der Unterklasse implementierst Du eine leere drawRect:-Methode und der Tabbar weist Du per Code [UIColor clearColor]; als Hintergrundfarbe zu.


    Du wirst staunen, aber genau diese Dinge habe ich gemacht, aber in der Unterklasse wird weder initWithFrame: noch init aufgerufen. Ich habe das Gefühl, dass das daran liegt, dass ich Storyboards nutze. Ich habe ja eine Unterklasse von UITabBar erstellt und diese im Inspektor als Custom Class hinterlegt.

    Edit:
    Hachja, ich hatte natürlich vergessen, die drawRect: auszukommentieren. Dinge gibt's. Danke!

    OT:
    Wenn ich die drawRect:-Methode leer lasse, gibt es dadurch Performance-Probleme?
  • Ach, awakeFromNib, war so lange nicht mehr unter OS X unterwegs, da gerät das schonmal in Vergessenheit, danke!

    Naja, barTintColor reicht nicht aus, um mehr Transparenz zu haben. Wenn ich die Alpha überschreibe, sind natürlich auch die Texte nicht mehr lesbar. Das ging jetzt aus meinem Post nicht hervor, aber es geht mir darum, dass der Hintergrund mehr Transparenz unter iOS7 hat, als Apple das voreingestellt hat.

    Für Tips bin ich natürlich gern offen!
  • Schluss mit der Kaffeesatz Leserei, hab die Kiste noch mal angeworfen. Einfach den barTintStyle setzen. Und der Designer dürfte auch an UIAppearance seine Freude haben.


    Gruß
    Manfred

    Quellcode

    1. @implementation OCAppDelegate
    2. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    3. {
    4. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    5. UITabBarController *tc = [[UITabBarController alloc] init];
    6. [[tc tabBar] setBarTintColor: [UIColor colorWithRed: 1.0 green: 0.0 blue: 0.0 alpha: 0.2]];
    7. [[self window] setRootViewController: tc];
    8. self.window.backgroundColor = [UIColor yellowColor];
    9. [self.window makeKeyAndVisible];
    10. return YES;
    11. }
    12. @end
    Alles anzeigen
    Seminare, Artikel, Code. ObjectiveCeeds - alles für die Apfelzucht.
  • Soso, das ist natürlich eine Lösung, die mit Appearance funktioniert. Allerdings habe ich da das Problem, dass es einfach nur 'matschig' aussieht und nicht 'transparenter'. Da ich eben viele iOS7-like-LSD Farben habe, die die UITabBar durchschimmern lassen soll, erzielt das nicht den gewünschten Effekt. Nur, wenn ich die BarTinitColor laufend ändere.
    Trotzdem danke, gute Idee nur nicht so ganz, was ich suche.