0

Ich habe ein einfaches Projekt erstellt, um zu testen, wie UINavigationBar transparent gemacht wird. In diesem Projekt habe ich zwei UIViewController. Der erste View-Controller zeigt einen großen Button, der den zweiten View-Controller in den Navigations-Controller drückt.Transparentes UINavigationBar-Problem mit UICollectionView

Der zweite View-Controller ist ein UIViewController, der ein UICollectioView enthält (es ist kein UICollectionViewController).

Im AppDelegate ich diesen Code in Anwendung geschrieben: didFinishLaunchingWithOptions

UINavigationBar.appearance().setBackgroundImage(UIImage(), forBarMetrics: .Default) 
UINavigationBar.appearance().shadowImage = UIImage() 
UINavigationBar.appearance().backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0) 
UINavigationBar.appearance().translucent = true 

Es ist wie ein Zauber für den ersten UIViewController arbeitet (die Navigationsleiste ist transparent), aber wenn ich den Umzug andere UIViewController (mit UICollectionView) die Navigationsleiste ist nicht transparent und wenn ich zurück zum vorherigen UIViewController komme bleibt immer noch nicht transparent!

Irgendwelche Vorschläge?

PS: Nur um klar zu sein, mein erwartetes Ergebnis ist, dass ich Zellen sehen möchte, auch wenn ich scrollen und sie unter der Navigationsleiste passieren. Ich weiß nicht, ob ich klar war.

Storyboard

+0

Fabio, ist nicht etwas in Ihrem Second-View-Controller (z. B. Code in ViewDidLoad), Einstellung der Transparenz? –

+0

@IanBell nein, gibt es nicht.Es ist ein sehr sauberes Projekt, von Grund auf neu erstellt. –

+1

@IanBell Nur um klar zu sein, mein erwartetes Ergebnis ist, dass ich Zellen sehen will, selbst wenn ich scrolle und sie unter der Navigationsleiste durchgehen. Ich weiß nicht, ob ich klar war. –

Antwort

0

Als ich 50 Ruf noch nicht kann ich nicht auf die Frage äußern, aber ich repliziert Ihr Projekt in Xcode und ich keine Fehler gefunden. Ich habe die folgenden Bildschirme (die durchscheinend Navigationsleiste bemerken):

First View Controller

Second View Controller

Um diese Bildschirme zu erstellen die folgenden Maßnahmen ergriffen, wo so das ist, wo etwas schief gegangen sein könnte:

  • Code zu AppDelegate hinzufügen
  • Embed FirstViewController in NavigationController
  • hinzufügen SecondViewController
  • hinzufügen Schaltfläche FirstViewController
  • hinzufügen segue zwischen 'Button' und SecondViewController
  • Collection hinzufügen
  • Hinzufügen von Abhängigkeiten zu 'Button' SecondViewController und 'Collection'

Das klingt blöd aber in der AppDelegate hast du deinen code vor den:

return true 
gesetzt

Aussage?

+0

ja ich tat, aber ich habe das Problem herausgefunden! Es war die oberste Einschränkung von UICollectionView! –

+1

Das ist großartig! Beachten Sie, wie Sie beim Platzieren von Einschränkungen definieren: "Abstand zum nächsten Nachbarn". In diesem Fall wurde die UINavigationBar angenommen. Sie können das Objekt jedoch auch manuell modellieren und von Xcode Constraints für Sie vorschlagen lassen: Auto-Layout-Probleme beheben -> Auf vorgeschlagene Einschränkungen zurücksetzen – Emptyless

0

Ich verbrachte 24 Stunden, um das Problem herauszufinden! Es war eine dumme schlechte Einschränkung! Die UICollectionView hatte eine Einschränkung für die Top Layout Guide anstelle von View of UIViewController!