隐藏导航栏后,iOS会调整UICollectionView Insets

时间:2016-08-12 11:27:29

标签: ios searchbar

Search off

Search

@IBAction func searchOn() {
    self.searchController.searchResultsUpdater = self
    self.searchController.hidesNavigationBarDuringPresentation = true
    self.searchController.dimsBackgroundDuringPresentation = false
    self.definesPresentationContext = true
    self.present(searchController, animated: true, completion: nil)
}

我想在这里做的是在显示搜索栏时隐藏导航栏并将单元格放在正确的位置,因为现在它们正在搜索栏下。

我能想到的其中一个解决方案就是在动画导航栏隐藏时向下移动相同的距离。但问题是我不知道切换导航和搜索栏之间动画的持续时间。

任何人都可以帮忙解决这个问题吗?

或者至少帮助我获得在导航和搜索栏之间切换的动画持续时间。

2 个答案:

答案 0 :(得分:0)

在viewDidLoad()方法中编写此代码。

let flow: UICollectionViewFlowLayout = CollectionView.collectionViewLayout as! UICollectionViewFlowLayout
      flow.sectionInset = UIEdgeInsetsMake(70, 0, 0, 0)

答案 1 :(得分:0)

另一种方法是尝试将contentOffset设置为所需位置。并将y位置更改为上下移动,您也可以给出负值

例如,

    //without animation
    collectionview.contentOffset = CGPoint(x: 0, y: 100);
    //with animation
    collectionview.setContentOffset(CGPoint(x: 0, y: 100), animated: true)

并且你也可以像Chirag Patel提到的那样利用sectionInset