Цвет фона 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 сгруппирован
Ответы
Ответ 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]];