Как изменить цвет границы сгруппированного UITableView - PullRequest
1 голос
/ 10 апреля 2010

Это касается iPhoneOS-sdk-3.2

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

Я прочитал все похожие посты, которые могу найти через Google, не говоря уже о stackoverflow. Я видел героическое PITA-решение Майка Акерса для отсечения UITableViewCell - эта проблема решена для iPhoneOS 3.0, и она не помогла мне с границей.

Я испробовал как программное, так и основанное на XIB решение, и оба показали одинаковые результаты.

Я поделюсь программной версией ниже:

У меня есть подкласс UIViewController, а не подкласс UITableViewController, чтобы выступать в качестве делегата UITableView - я выбрал этот маршрут, так как я кодирую на iPad, а UITableViewController по сообщениям занимает весь экран. Метод loadView моего подкласса UIViewController:

- (void) loadView {
  self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
  [self.view release];
  self.view.backgroundColor = [UIColor blackColor];

  // add and configure UITableView                                                                                     
  CGRect tableViewRect = CGRectMake(0., 0., 256., 768.);

  myTableView = [[UITableView alloc] initWithFrame:tableViewRect style:UITableViewStyleGrouped];

  // set the tableview delegate to this object and the datasource to the datasource which has already been set          
  myTableView.delegate = self;
  myTableView.dataSource = self;

  myTableView.sectionIndexMinimumDisplayRowCount = 1;

  myTableView.backgroundColor = [UIColor clearColor];
  myTableView.separatorColor = [UIColor whiteColor];
  myTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

  myTableView.opaque = NO;

  // add the table view to our background view                                                                          
  [self.view addSubview:myTableView];
  [myTableView release];
}

1 Ответ

5 голосов
/ 11 апреля 2010

Я нашел решение. Такое поведение, по-видимому, зависит от iPhoneOS 3.2, так как Apple добавила свойство backgroundView для UITableView в iPhoneOS 3.2.

Я попытался [myTableView.backgroundView removeFromSuperView] и UITableView просто заменил его другим.

Вместо этого я решил добавить:

myTableView.backgroundView.hidden = YES;

...