Можно ли поместить контроллер обновления в заголовок CollectionView? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть CollectionView с Header, и я хочу добавить RefreshController к CollectionView, что я уже сделал. Он показывает выше Header, как я и ожидал. Однако я хочу, чтобы RefreshController показывал в Header.

Причина этого в том, что Toolbar покрывает Заголовок. Когда я опускаю вниз, чтобы обновить, Header становится видимым так, как я хочу, чтобы RefreshController был видимым. Но мне нужно было бы опустить высоту Header, чтобы сделать видимым RefreshController, а это
а) слишком большое расстояние для прокрутки и
б) слишком много места между RefreshControllerи CollectionView

Вот код:

var refreshControl = UIRefreshControl()

override func viewDidLoad() {
    super.viewDidLoad()

    [...]

    refreshControl.tintColor = .gray
    refreshControl.backgroundColor = .white
    refreshControl.addTarget(self, action: #selector(refreshContents), for: .valueChanged)
    eventCollectionView.refreshControl = refreshControl
    eventCollectionView.register(EventHeaderView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: toolbarId)
}

@objc func refreshContents() {
    self.perform(#selector(finishedRefreshing), with: nil, afterDelay: 1.5)
}

@objc func finishedRefreshing() {
    refreshControl.endRefreshing()
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
    return .init(width: screenWidth, height: 50)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...