Вы можете сделать вид зависшим так же, как любой реальный объект;Держите это с чем-то невидимым.
По сути, вы хотите создать чистый UIView
(с отключенным взаимодействием с пользователем), который будет размером представления вашего контроллера представления, и добавить его как подпредставление к вашему.просмотреть свойство view контроллера.Таким образом, он невидимо сидит сверху.затем вы можете добавить подпредставление к этому чистому представлению, и это подпредставление не будет перемещено.
Редактировать:
Кажется, что этот хороший чистый подход не будет работать для вастак как вам нужен контроллер вида, чтобы он был UITableViewController
.Ответом на этот немного более сложный подход является использование метода делегата для UIScrollView
, который также работает для UITableView
.У Apple фантастическая демонстрация этой концепции в видео WWDC2011 - Session 125 - UITableView Changes, Tips, Tricks
.Если вы можете смотреть это, я очень рекомендую это.Суть этой проблемы начинается примерно с 36:10
.
Но чтобы подвести итог, вы реализуете метод делегата scrollViewDidScroll:
.И управляйте движением табличного представления, регулируя свойства положения представления.Здесь я сохраняю свойство UIView
с именем viewToKeepStill
, все еще используя этот метод.
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
// CGFloat stillViewDesiredOriginY; declared ivar
CGRect tableBounds = self.tableView.bounds; // gets content offset
CGRect frameForStillView = self.viewToKeepStill.frame;
frameForStillView.origin.y = tableBounds.origin.y + stillViewDesiredOriginY; // offsets the rects y origin by the content offset
self.viewToKeepStill.frame = frameForStillView; // set the frame to the new calculation
}