2013-10-29 6 views

risposta

6

Finché lo schermo è in Paesaggio, è possibile utilizzare questo come una soluzione alternativa:

UIView *coverView = [[UIView alloc] initWithFrame:CGRectMake(320, 0, 1, 64)]; 
    [coverView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"black_pixel.png"]]]; 
    [splitViewController.view addSubview:coverView]; 
+1

Questo è l'unico che mi permette di cambiare il colore del divisore in diversi colori mentre si naviga avanti e indietro tra le visualizzazioni del tavolo. Invece di usare un "pixel nero", ho appena impostato il colore di sfondo di "coverView". –

0

Prova questo:

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) { 
    splitViewController.view.backgroundColor = [UIColor blackColor]; 
} 
+0

Questo non ha funzionato per me – Bulwinkel

-1

è possibile effettuare le seguenti per sbarazzarsi di quella linea bianca:

self.splitViewController.view.backgroundColor = [UIColor blackColor]; 
for (UIView *subView in self.splitViewController.view.subviews) { 
    subView.backgroundColor = [UIColor blackColor]; 
} 

di un modo personalizzato per ottenere lo splitViewController se non si ha accesso diretto ad esso:

UIViewController *_splitViewController = self.parentViewController; 
while (![_splitViewController isKindOfClass:[UISplitViewController class]]) { 
    _splitViewController = _splitViewController.parentViewController; 
} 
_splitViewController.view.backgroundColor = [UIColor blackColor]; 
for (UIView *subView in ((UISplitViewController *)_splitViewController).view.subviews) { 
    subView.backgroundColor = [UIColor blackColor]; 
} 
4

Sotto il cofano, c'è un UILayoutContainerView nella parte superiore dello schermo, sotto il punto di vista principali e di dettaglio . Per cambiare il colore del separatore tra le barre di navigazione, devi solo cambiare il colore di sfondo di quella vista.

In Swift, nella sottoclasse di SplitViewController, prova a seguire:

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 

    if let potentialSeparatorView = view.subviews.first as? UIView { 
     if round(potentialSeparatorView.bounds.height) == 64 { 
      potentialSeparatorView.backgroundColor = UIColor(red:0.20, green:0.55, blue:0.83, alpha:1) 
     } 
    } 
} 
+0

L'accesso alle sottoview di una classe che non possiedi non è sicuro e qualcosa che non dovresti mai fare in un'app di spedizione. Come si confronta un valore in virgola mobile con un valore specifico (cioè senza un qualche tipo di epsilon), in quanto è altamente inaffidabile. In breve: non farlo. Semplicemente no. Nessuno di quelli. – Regexident

+0

@Regexident Grazie per l'avvertimento. Puoi approfondire il motivo per cui non è sicuro accedere a view.subviews [0] in questo caso? Per confrontare il punto variabile, so che non è accurato, ma non sto lanciando un bumb nucleare. Se non è riuscito, il colore di sfondo non sarebbe cambiato, il gioco è fatto. –

+0

Poiché il proprietario della classe può modificare la gerarchia della vista in qualsiasi momento (e Apple spesso lo fa, ovviamente). Generalmente non si dovrebbe mai fare affidamento sui dettagli di implementazione di una classe sconosciuta (se non del tutto).E il tuo 'height == 64' fallisce non appena Apple cambia le dimensioni della vista o calcola l'altezza in modo diverso a causa di potenziali errori di arrotondamento. – Regexident

1

Metti la tua UISplitViewController in ulteriore ViewController con Container Vista in questo modo:

screenshot

poi nascondere UINavigationBar s in master e dettagli viewControllers e avrai un solo UINavigationBar senza una riga bianca in UIViewController aggiuntivo.

screenshot

0

uso

splitViewController?.view.backgroundColor = UIColor.clear 

nel tableviewcontroller (master viewcontroller), è possibile impostare il colore che si desidera così.

Problemi correlati