2017-10-18 3 views
1

Ich habe eine einfache UICollectionView mit einer benutzerdefinierten Zelle in einem NavigationController. Aus irgendeinem Grund ändert die Zelle collectionView beim Verschieben eines viewControllers ihr Layout während des Übergangs.swift: uicollectionview ändert contentoffset der Zelle während des Übergangs

Ist es ein allgemeines Verhalten von uicollectionview während des ViewController-Übergangs? Da zum Beispiel: Etiketten nicht ein solches Problem

Hinzufügen neuer View-Controller

navigationController?.pushViewController(controller, animated: true) 

Einstellung Automatische Anordnung mit EasyPeasy pod

collectionView.easy.layout([ 
    Top(), 
    Right(), 
    Width(view.frame.width), 
    Bottom(10).to(button), 
]) 

button.easy.layout([ 
    Center(), 
    Height(60), 
    Width(300), 
]) 
+0

Haben Sie einen Code, um uns zu zeigen? –

+0

Es ist schwer zu verstehen, was Sie mit diesen Einschränkungen zu tun versuchen, aber Sie verwenden keine Höhe für die Sammelansicht. Was ich denke wird mit dem Knopf berechnet. Wie es aussieht, wird die grüne Sammelansicht auf 10px gesetzt (vielleicht?). Wann setzen Sie die Einschränkungen in Ihrem Code? Und was ist diese blaue Box und die Einschränkungen für dieses Element? Fühlt sich an, als gäbe es ein Problem mit deinem automatischen Layout. –

+0

@MartinBorstrand UICollectionViewCells backgroundColor ist blau. Ich setze Beschränkungen in viewDidLoad. Ich entschuldige mich für die Unannehmlichkeiten. Scheint so, als ob beim Zurückgehen die Zelle kleiner wird – Dauren

Antwort

0

I

When back button was clicked grüne Farbe von Kollektion haben denke, ich habe dein Problem gefunden und es ist in dir AppDelegate. Die Eigenschaft isTranslucent, die für Ihren Navigationscontroller auf false gesetzt ist, scheint dieses seltene Problem zu beheben. Eine transparente Navigationsleiste befindet sich oben auf der Ansicht Ihres Viewcontrollers. Eine nicht durchscheinende Navigationsleiste drückt die Ansicht Ihres View-Controllers nach unten, oder anders ausgedrückt, es wird so angepasst, dass sie darunter liegt. Aber warum die Collectionsview so animiert, wie sie ist, kann ich eigentlich keine eindeutige Antwort geben. Vielleicht könnte jemand anderes das tun? ..

Um Ihre Navigationsleiste durchscheinend zu halten, können Sie eine andere Eigenschaft in Ihrem Viewcontroller setzen, die'extendedLayoutIncluedsOpaqueBars'ist auf 'true'.

So .. Tun Sie das. In Ihrem AppDelegate:

window = UIWindow(frame: UIScreen.main.bounds) 
window!.makeKeyAndVisible() 
let controller = TestingNavigationController() 
let navigation = UINavigationController(rootViewController: controller) 
window!.rootViewController = navigation 

let navigationBarAppereance = UINavigationBar.appearance() 
navigationBarAppereance.isTranslucent = false 

Dann fügen Sie in Ihrer Ansicht-Controller viewDidLoad Methode, um diese Linie

extendedLayoutIncludesOpaqueBars = true 

Hoffnung das Ihr Problem lösen! :)

Apple Documentation about extendedLayoutIncludesOpaqueBars

+0

@Dauren würdest du bitte auf meine Antwort reagieren? –

Verwandte Themen