2010-07-20 3 views
7

У меня есть UITableView и хотел бы применить фоновое изображение ко всем ячейкам. Мой рост для каждой ячейки является переменным. Как мне создать фоновое изображение?Как установить фоновое изображение UITableViewCell с разной высотой?

cell.contentView.backgroundColor = [UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
+0

Это не работает для меня (после фиксации опечатки). –

ответ

3

Одна из идей - разместить UIImage с растяжимым изображением на нем. Таким образом, неважно, какая высота строки, изображение может растягиваться, чтобы соответствовать.

Вы также можете сделать что-то подобное тому, что Мэтт сделал here with a gradient layer

+0

Можете ли вы описать растяжимое изображение? Нужно ли мне создать изображение размером 1x55 пикселей (только пример), которое будет автоматически растягиваться по плоскости x или требуется дополнительный код? –

+3

Вы в основном просто даете изображение, а затем рассказываете, какие части не растягиваются с помощью '[[UIImage imageNamed: @" someBGImage.png "] stretchableImageWithLeftCapWidth: 5 topCapHeight: 5];' где 5 пикселей - это часть, которая isn ' t растяжимая (например, граница). Дополнительная информация http://developer.apple.com/iphone/library/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/instm/UIImage/stretchableImageWithLeftCapWidth:topCapHeight: – iwasrobbed

2

В методе cellForRowAtIndexPath вы можете дать клетку цвета фона

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 


{ 
    static NSString *cellIdentifier = @"Cell"; 
    UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (cell == nil) 
    {  
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
    } 
// for cell background color 
    cell.backgroundView =[[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"tab2.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]; 

// for selection color  
    cell.selectedBackgroundView =[[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"selected.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ]; 
    return cell; 
}