iOS корректирует вставки UICollectionView после скрытия панели навигации

Поиск выключен

Поиск

@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)
}

Что я хочу сделать здесь, так это скрыть панель навигации при представлении панели поиска и поместить ячейки в правильное положение, потому что теперь они идут под панелью поиска.

Одно из решений, которое я смог придумать, - это просто анимироватьWithDuration UIEdgeInsetsMake вниз на такое же расстояние, на котором они перемещаются вверх, когда панель навигации скрывается. Но проблема в том, что я не знаю длительность анимации между переключением панели навигации и поиска.

Может ли кто-нибудь помочь разобраться в этом?

Или, по крайней мере, помогите мне получить продолжительность анимации, которая переключается между панелями навигации и поиска.


person klaudas    schedule 12.08.2016    source источник


Ответы (2)


напишите этот код в методе viewDidLoad().

let flow: UICollectionViewFlowLayout = CollectionView.collectionViewLayout as! UICollectionViewFlowLayout
      flow.sectionInset = UIEdgeInsetsMake(70, 0, 0, 0)
person Chirag Patel    schedule 12.08.2016
comment
это никуда не ведет. Ячейки все равно попадают под панель поиска - person klaudas; 12.08.2016
comment
напишите код выше в последней строке внутри функции searchOn(). - person Chirag Patel; 12.08.2016

еще один способ - попробовать установить contentOffset в требуемое положение. И изменить положение y для перемещения вверх и вниз, вы также можете указать отрицательные значения.

Например,

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

а также вы можете воспользоваться sectionInset, как упомянул Чираг Патель

person Shankar BS    schedule 12.08.2016
comment
ну, я думал, что это решит мою проблему, по крайней мере, место, где теперь отображаются ячейки, правильное, но даже с setContentOffset анимированные ячейки прыгают, а не остаются на месте. - person klaudas; 12.08.2016
comment
Хорошо, вам не нужно устанавливать его повторно, установите это, как только появится элемент управления поиском, и сбросьте его обратно, я имею в виду установку нулевой точки при закрытии элемента управления поиском. - person Shankar BS; 12.08.2016
comment
Ну это очевидно, но это не так. Кажется, что анимация между исчезновением панели навигации и изменением смещения — это не одно и то же. Навигация перемещает контент быстрее, чем меняются смещения, или наоборот. Я не могу сказать. Но во время этого процесса переключения клетки не остаются на одном месте, как должны (именно этого я и хочу добиться). Они слегка дергаются на несколько точек вверх и вниз, пока не появится строка поиска. - person klaudas; 12.08.2016