swift:uicollectionview在转换期间更改单元格的contentoffset

时间:2017-10-18 08:05:16

标签: ios swift

我有一个简单的UICollectionView,在navigationController中有一个自定义单元格。出于某种原因,当我推动viewController时,collectionView单元格在转换期间更改其布局。

在viewController转换期间,uicollectionview的一些常见行为是什么?因为,例如:标签没有这样的问题

When back button was clicked 来自collectionView的绿色

添加新视图控制器

navigationController?.pushViewController(controller, animated: true)

使用EasyPeasy pod

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

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

1 个答案:

答案 0 :(得分:0)

我想我已经找到了你的问题,它就在你AppDelegate中。向导航控制器设置为false的属性isTranslucent似乎是这个罕见的问题。半透明导航栏将位于viewcontroller视图的顶部,就像它上面一样。一个非半透明的导航栏会向下推动你的视图控制器的视图,换句话说,它会重新调整它以使其适合它。但是为什么集合视图像它一样动画,我实际上无法给出明确的答案。也许其他人可以做到这一点?..

要使导航栏保持半透明,您可以在viewcontroller中将另一个属性设置为'extendedLayoutIncluedsOpaqueBars'为true。

所以..这样做。在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

然后,在视图控制器viewDidLoad方法中添加此行

extendedLayoutIncludesOpaqueBars = true

希望这能解决您的问题! :)

Apple Documentation about extendedLayoutIncludesOpaqueBars