2014-10-09 3 views
7

Sto cercando di fare il mio TabBar trasparente, ho cercato, ma tutto quello che ho trovato è stato articoli conseguente in parte e non del tutto trasparenti tabBars e alcuni erano per IOS 5, eccUITabBar completamente trasparente in iOS 8

Vorrei fare questo come si vede nel disegno 3:

enter image description here

Qual è il modo più semplice per ottenere questo risultato?

ho pensato di fare questo:

// Make the tabBar transparent 
self.tabBarController.tabBar.backgroundColor = [UIColor clearColor]; 
self.tabBarController.tabBar.translucent = YES; 

ma questo risultato non era esattamente perfetto:

enter image description here

davvero apprezzare aiutare :)

Cordiali saluti, Erik

Aggiornamento

// Make the tabBar transparent 
[[UITabBar appearance] setBarTintColor:[UIColor clearColor]]; 
self.tabBarController.tabBar.translucent = YES; 

risposta

22

Hai provato il barTintColor?

[[UITabBar appearance] setBarTintColor:[UIColor clearColor]]; 
[[UITabBar appearance] setBackgroundImage:[UIImage new]]; 

Questo dovrebbe fare il trucco.

+0

Stesso risultato con il codice ho messo nella mia interrogazione aggiornato:/- ho messo questo codice nel metodo viewWillAppear, è corretto? – Erik

+0

@Erik 'viewWillAppear:' è troppo tardi. Prova a inserirla nell'applicazione 'AppDelegate: didFinishLaunchingWithOptions:' e vedi se è d'aiuto. –

+0

@JohannesFagrenkrug purtroppo lo stesso risultato con il codice nel mio aggiornamento scritto in didFinishLaunchingWithOptions: – Erik

6

È necessario sottoclasse l'UITabBarController e nel viewdidload: si dovrebbe inserire questo codice:

CGRect rect = CGRectMake(0, 0, 1, 1); 
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 1.0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetFillColorWithColor(context, [UIColor clearColor].CGColor); 
CGContextFillRect(context, rect); 
UIImage *transparentImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
[self.tabBar setBackgroundImage:transparentImage]; 
[self.tabBar setShadowImage:transparentImage];  
// self.tabBar.alpha = 0.0; 
+1

Non ho usato una sottoclasse, ma 'setShadowImage' era il segreto del mio problema, +1 :) – Olie

19

Swift 3.0

... chiamare questo codice nella didFinishLaunchingWithOptions del AppDelegate

let tabBar = UITabBar.appearance() 
tabBar.barTintColor = UIColor.clear 
tabBar.backgroundImage = UIImage() 
tabBar.shadowImage = UIImage() 

Il risultato sarà uno sfondo trasparente per ogni UITabBar.

+0

Dopo tanti tentativi di diverse cose e soluzioni su Internet, questo ha reso il tabbar 'traslucido' ma ora lo sente è troppo traslucido e non ha alcuna sfocatura. Credo che sia il tabbar.backgroundImage = UIImage() che causa questo. Qualsiasi aiuto aggiuntivo che può generare quel piacevole effetto sfocato invece della completa trasparenza? – c0d3Junk13

0

Ciò facile soluzione fissa il mio problema:

let size = CGSize(width: tabBar.bounds.size.width, 
         height: tabBar.bounds.size.height) 
tabBar.backgroundImage = UIImage.jotImage(with: UIColor.clear, size: size)