it-swarm.com.ru

iOS 8 UITableView появление цвета фона

Xcode 6 beta 6, пытающийся изменить все цвета фона UITableView во внешнем прокси:

[[UITableView appearance] setBackgroundColor:[UIColor redColor]]

Но кажется, что это не работает.

Действия по воспроизведению:

1 Создайте проект одного представления

2 Добавьте UITableView в ViewController в раскадровка

3 Установите делегатов для просмотра контроллера и изменения фона в IB:

enter image description here

4 Добавьте динамическую ячейку и настройте источник данных:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  return 2;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell1Identifier" forIndexPath:indexPath];
  return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  return 60.f;
}

5 В приложении делегат:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Override point for customization after application launch.
  [[UITableView appearance] setBackgroundColor:[UIColor redColor]];

  return YES;
}

6 Запустите приложение и посмотрите неправильный цвет:

enter image description here

Любые предложения, как это исправить? Настройка цвета фона для каждой таблицы не выглядит хорошим решением.

19
HotJard

попробуйте "сбросить" BackgroundColor на "Default" в InterfaceBuilder (даже если он уже Default, вы увидите небольшое изменение цвета)

это не работает с табличными представлениями сгруппированных стилей

Обновление:

это сработало для меня

[[UIScrollView appearance] setBackgroundColor:[UIColor redColor]];
10
Chakalaka

Очистить цвет для UITableViewCell, не работающего в планшете в XCode 6. Следующий обходной путь решает для меня.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

     cell.backgroundColor = [UIColor redColor];
}
5
Megamind

Похоже, что для iOS 8, по крайней мере, в наших обстоятельствах, когда мы устанавливаем цвет фона представления с таблицей в этом представлении, мы должны явно установить для цвета таблицы и фона ячейки значение Clear, чтобы получить желаемый цвет. с точки зрения показать. Я полагаю, что в предыдущих версиях iOS ячейки по умолчанию были прозрачными, но, похоже, это уже не так.

2
Prethen

[UITableVIew backgroundColor] не помечен как UI_APPEARANCE_SELECTOR. Внешний вид прокси будет работать, только если селектор помечен как UI_APPEARANCE_SELECTOR.

1
N3al

Установите прозрачный цвет фона ячейки в TableView: willDisplayCell: forRowAtIndexPath:

1
Radin Gospodinov

Похоже, что внешний вид прокси демонстрирует явно не сообщаемую ошибку в iOS 8.0.x; это не связано с изменением iOS 7, включающим цвет фона по умолчанию для ячеек таблицы.

Относительно хорошая новость заключается в том, что эта проблема возникает только между iOS 8.0 и 8.0.2, потому что:

  1. Мой iPhone 4S на 7.1.2 не имеет этой проблемы,
  2. IPhone 6 моего коллеги под управлением 8.1 не имеет этой проблемы.

Пока большинство пользователей не обновится, вам придется явно задавать фон для самого объекта, возвращая нас в эпоху, предшествующую появлению :(

0
Ja͢ck