Как закодировать контроллер представления настроек, как в приложении Path Talk?

#ios #objective-c #uitableview #uiimageview #storyboard

#iOS #objective-c #uitableview #uiimageview #Раскадровка

Вопрос:

Я хотел бы закодировать контроллер просмотра «настройки», как в приложении Path Talk. Это своего рода эффект параллакса. Twitter также имеет тот же эффект.

Я начал что-то с Storyboard, но на самом деле это не работает: я использую TableViewController. Внутри TableView у меня есть представление, которое содержит 2 изображения (фоновые изображения и изображения профиля), а затем 3 раздела просмотра таблицы. Проблема в том, что когда пользователь перетаскивает изображение вниз, изображение опускается. Это не похоже на приложение Path Talk, потому что в приложении Path Talk изображения исправлены. Они не перемещаются вниз, когда пользователь перетаскивает их (см. Рисунки).

Итак, я нашел библиотеку на GitHub:https://github.com/apping/APParallaxHeader это могло бы мне помочь, но прежде чем тратить свой день на библиотеку, было бы неплохо получить ваши советы. Возможно ли это легко сделать с помощью раскадровки или библиотека является лучшим решением?

Спасибо за вашу помощь!

Комментарии:

1. Добавляйте заголовок не в tableview, а в его superview

2. Я не могу добавить заголовок в superview. Как вы это сделали? Ссылка

3. Я думаю, это должно быть возможно с обычным UIViewController. Добавьте к нему UITableView и заголовок поверх него.

4. Наконец, это решение не работает, потому что изображение фиксируется, когда пользователь прокручивает вниз и когда он прокручивает вверх

5. Теперь я в замешательстве. Я думал, вы хотите фиксированное изображение?

Ответ №1:

Начните с обычного UIViewController в раскадровке. Добавьте к нему UITableView и, т.е. UIImageView . Рамка TableView должна занимать весь вид, а ImageView — только нужную часть вверху. Затем заставьте ваш ViewController реализовать UITableViewDelegate (и, возможно UITableViewDataSource , если вы хотите заполнить таблицу из него). В viewDidLoad установите делегаты и contentInset так, чтобы они отображали изображение в качестве заголовка:

 - (void)viewDidLoad
{
    [super viewDidLoad];

    self.tableView.delegate = self;
    self.tableView.contentInset = UIEdgeInsetsMake(self.imageView.frame.size.height, 0, 0, 0);
    self.tableView.dataSource = self;
}
  

реализуйте, scrollViewDidScroll: поскольку a UITableViewDelegate соответствует UIScrollViewDelegate протоколу, и перемещайте изображение туда в зависимости от направления прокрутки:

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    CGFloat imageY = -scrollView.contentOffset.y-self.tableView.contentInset.top;
    if(imageY>0)
        imageY = 0;
    self.imageView.frame = CGRectMake(0, imageY, self.view.bounds.size.width,     self.imageView.bounds.size.height);
}