简体   繁体   中英

swift: uicollectionview changes contentoffset of the cell during transition

I have a simple UICollectionView with a custom cell inside of a navigationController. For some reason when I push a viewController, the collectionView cell changes its layout during the transition.

Is it some common behavior of uicollectionview during viewController transition? Because, for example: labels don't have such problem

When back button was clicked Green color from collectionView

Adding new view controller

navigationController?.pushViewController(controller, animated: true)

Setting Autolayout using EasyPeasy pod

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

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

I think I've found your problem and it's in you AppDelegate. The property isTranslucent which is set to false to your navigation controller seems to cauese this rare problem. A translucent navigation bar will be on top of your viewcontroller's view, like above it. A non-translucent navigation bar pushes down your view controller's view or in other words rezising it so it fits beneath it.. But why the collectionview animates like it does is something I actually cant give a definite answer about. Maybe someone else could do that?..

To keep your navigation bar translucent you can set another property in your viewcontroller which is ´extendedLayoutIncluedsOpaqueBars´ to true.

So.. Do like this. In your 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

Then, in your view controllers viewDidLoad method add this line

extendedLayoutIncludesOpaqueBars = true

Hope this will solve your problem! :)

Apple Documentation about extendedLayoutIncludesOpaqueBars

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM