Имитировать настроенный ContentInset на iOS 10? - PullRequest
0 голосов
/ 29 мая 2018

Я хочу изменить размер и положение подпредставления ячейки tableView из scrollViewDidScroll(_:), измерив contentOffset.contentOffset, кажется, переходит к ненулевому значению при первом вызове scrollViewDidScroll(_:).

Для UITableView в UINavigationController, adjustedContentInset на iOS 11 позволяет правильно рассчитатьотносительный contentOffset при прокрутке tableView.

Например, если я прокручиваю tableView, я могу вычислить точную сумму, по которой он был прокручен следующим образом:

override func scrollViewDidScroll(_ scrollView: UIScrollView) {
    var adjustedTopInset: CGFloat = 0.0
    if #available(iOS 11.0, *) {
        adjustedTopInset = scrollView.adjustedContentInset.top
    }
    let deltaY = scrollView.contentOffset.y - adjustedTopInset
}

Дело в том, что adjustedContentInset доступен только на iOS 11, как рассчитать ту же относительную сумму прокрутки на iOS 10?

В viewDidLoad() contentOffset из tableView равно CGPointZero, но при первом вызове scrollViewDidScroll(_:) contentOffset.y переходит к значению, которое является высотой панели навигации и строки состояния.На iOS 11 adjustedContentInset помогает, предоставляя эту высоту.

Как я могу рассчитать это на iOS 10?

1 Ответ

0 голосов
/ 29 мая 2018

Звучит так, как будто это может быть проблемой "xy".Вы не объяснили, что вы на самом деле пытаетесь сделать, но упоминание viewDidLoad предполагает, что вы пытаетесь получить какое-то значение измерения в viewDidLoad, чтобы позже узнать, насколько изменилось это измерение.Но вы не можете измерить что-нибудь в viewDidLoad;это слишком рано.Отложите измерение до первого вызова viewDidAppear, и тогда у вас будет правильное начальное значение.

...