Подтвердить что ты не робот

Цвет фона UITableView

Я видел различные сообщения о цвете фона для UITableView для ios 4.2, но я просто не могу изменить цвет фона.

UIView *bgView = [[[UIView alloc] init] autorelease];
bgView.backgroundColor = [UIColor blackColor];
bgView.opaque = YES;
self.myTableView.backgroundView = bgView;

Я разместил этот код в viewDidLoad, но он не изменит цвета. Мой UITableView является IBOutlet внутри UIViewController с UITableViewDelegate и UITableViewDataSource, поэтому я думаю, что в viewDidLoad UITableView уже отображен, и я не могу изменить его цвет фона.

EDIT * - UITableView сгруппирован

4b9b3361

Ответ 1

Попробуйте установить фоновый вид представления таблицы на нуль, а также установите цвет фона в представлении таблицы

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.myTableView.backgroundView = nil;
    self.myTableView.backgroundColor = [UIColor blackColor];
}

Ответ 2

Просто измените свойство backgroundColor как tableView, так и backgroundView backgroundView.

- (void)viewDidLoad {
    [super viewDidLoad];

   id desiredColor = [UIColor clearColor];
   self.tableView.backgroundColor = desiredColor;
   self.tableView.backgroundView.backgroundColor = desiredColor;
}

Ответ 3

Подтвердить решение Edward Huynh для всех iOS < 6.0

Используйте следующий код в viewDidLoad, если вы не объявили myTableView в .h

self.tableView.backgroundView = nil;
self.tableView.backgroundColor = [UIColor greenColor];

Добавьте следующие строки, если вы хотите загрузить шаблон в качестве фона

self.tableView.opaque = NO;
self.tableView.backgroundColor = [UIColor clearColor];
self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"myImage"]];

Ответ 4

используйте этот делегат для изменения цвета

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor redColor];
}

ИЗМЕНИТЬ 1:

UIView* backgroundView = [ [ [ UIView alloc ] initWithFrame:CGRectZero ] autorelease ];
backgroundView.backgroundColor = [ UIColor yellowColor ];
cell.backgroundView = backgroundView;
for ( UIView* view in cell.contentView.subviews ) 
{
    view.backgroundColor = [ UIColor clearColor ];
}

Ответ 5

Фоновый вид, размер которого равен 0 на 0 пикселей, не будет отображаться. Попробуйте initWithFrame: чтобы получить представление фактического размера.

Ответ 6

Просто добавлю к этому. Мне нужно было изменить цвет фона uiscrollview tableview для определенного эффекта. Вы можете сделать это глобально:

[[UIScrollView appearance] setBackgroundColor:[UIColor whiteColor]];

Или ограничьте его одним контроллером (iOS9):

[[UIScrollView appearanceWhenContainedInInstancesOfClasses:@[[MyViewController class]]] setBackgroundColor:[UIColor whiteColor]];