Привязка TableView к нижней части последней ячейки вместо TableFooterView - PullRequest
1 голос
/ 03 апреля 2012

У меня есть простая таблица с разделами таблицы, ячейками и tableFooterView.

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

Я пытался найти это, но мне кажется, что я не могу найти правильные ключевые слова (все еще плохо знакомые с xcode и загадочные / длинные имена для всего), все, что я нахожу, это люди, которые хотят включить / отключить отказов или люди, желающие добавить пользовательские кнопки в нижний колонтитул.

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

Ответы [ 2 ]

0 голосов
/ 28 октября 2015

У вас может быть нижний колонтитул высоты 0px с подпунктом UIImageView с высотой 200px или более, где вы поместите свой градиент.Затем установите нижний колонтитул, чтобы он не обрезал подпредставления.

Теперь, когда вы прокрутите содержимое таблицы, ваш нижний колонтитул переместится вверх и покажет свое подпредставление.

0 голосов
/ 04 апреля 2012

A UIScrollView, суперкласс UITableView, может быть несчастным существом. В них запрограммировано так много поведения, что иногда то, что на бумаге кажется легким, может быть трудным. Добавьте к этому тот факт, что это является табличным представлением, и оно только ухудшается.

Если вы решили использовать свойство UITableView tableFooterView для достижения этой цели, я имел ограниченный (очень) успех, используя:

Это UIScrollViewDelegate методы, ваш контроллер представления, вероятно, уже является делегатом табличного представления.

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
    UIView *tableViewFooter = _tableView.tableFooterView;
    CGFloat maxContentOffsetY = tableViewFooter.frame.origin.y - scrollView.frame.size.height;
    if (scrollView.contentOffset.y > maxContentOffsetY){
    //if (targetPoint.y > maxContentOffsetY){
        [scrollView setContentOffset:CGPointMake(0, maxContentOffsetY) animated:YES];
    }
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ // called when scroll view grinds to a halt
    // Check offset and correct if we landed below the correct offset
    UIView *tableViewFooter = _tableView.tableFooterView;
    CGFloat maxContentOffsetY = tableViewFooter.frame.origin.y - scrollView.frame.size.height;
    if (scrollView.contentOffset.y > maxContentOffsetY){
        [scrollView setContentOffset:CGPointMake(0, maxContentOffsetY) animated:YES];
    }
} 

Я бы предложил просто добавить градиент к свойству view вашего контроллера вида. Таким образом, когда таблица прокручивается за пределы экрана, вы увидите градиент позади нее. Тогда вы получите большинство желаемого поведения бесплатно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...