2009-07-13 4 views
7

В настоящее время есть много ответов на вопрос, как установить пользовательский фиксированный фона для UITableView. Но есть ли какой-нибудь трюк, чтобы сделать фоновое изображение прокрутки вместе с ячейками таблицы?Прокрутка фонового изображения для UITableView?

Спасибо!

ответ

3

.

UIImageView *background = [[UIImageView alloc]initWithImage: [UIImage imageNamed: @"background.jpg"]]; 
    [tableView addSubview: background]; 
    [tableView sendSubviewToBack: background]; 
+1

Спасибо, попробовал, но я думаю, что сообщение sendSubviewToBack не работает так, как должно в этом случае: UIImageView находится над ячейками. Любые подсказки? –

+1

Этот подход был моей первой попыткой. Отправляя его обратно, все же кладет его выше клеток. –

-6

Возможный ответ - очевидно, - уже на StackOverflow:

self.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"desk.png"]]; 

Ref: iPhone - Setting background on UITableViewController

Edit: Это не идеальный ответ, я знаю :)

+2

Это будет использовать части фона в каждой ячейке. Поэтому, если у вас есть фоновое изображение выше, чем одна ячейка, которая не будет работать. – OgreSwamp

+6

Это НЕ правильный ответ, потому что фоновое изображение не будет прокручиваться вместе с таблицей. – Bobo

+1

Должно ли это работать? Я столкнулся с той же проблемой, о которой упомянул @OgreSwamp, хотя фон прокручивается с помощью таблицы, в ячейке используются части фона в каждой ячейке. Если это решение не работает, почему это было принято как правильный ответ? –

3

Я думаю, что ответ заключается в подклассе UITableView и переопределении layoutSubviews. В UITableView вы должны создать свойство, которое указывает на фоновый UIImageView.

При переопределении layoutSubviews просто написать

-(void) layoutSubviews { 
    [self sendSubviewToBack: backgroundImageView]; 
    [super layoutSubviews]; 

} 
+0

К сожалению, этого недостаточно, чтобы исправить все угловые случаи, когда виды перемешаны. – steipete

+0

как это так? он действительно решает проблему, я пробовал это сам. О каких уголках вы говорите? – thewormsterror

+0

Иногда UITableView перетасовывает представления. Он не детерминирован и не отличается между версиями iOS. Не используйте это. Я использовал прокручивающийся UIImageView, который был переопределен в scrollViewDidScroll – steipete

6

Вы должны установить фоновое изображение с помощью BackgroundColor собственности UITableView:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
+1

Если это не 'UITableViewController', вы должны использовать' tableView.backgroundColor = ... ' – Jochen

+0

Это хорошо – Eugene

+1

Это тоже работает в iOS6? Я пытаюсь это сделать в моем представленииDidLoad, но ничего не происходит, он по-прежнему показывает стандартный групповой просмотр bg. – JonEasy

0

Этот ответ также может быть полезным. Background image that's scrollable and in synch with the UITable scrolling

Это связано с небольшим количеством обмана с табличными видами.

Вы должны создать отдельную таблицу фона, которая является ведомой таблицы переднего плана, и она использует KVO для прослушивания свойства contentOffset для представления таблицы переднего плана.

Смежные вопросы