¿groupTableViewBackgroundColor está en desuso en iOS 6?

Estaba probando mi aplicación con iOS 6.0 y Xcode 4.5GM y configuré una vista como esta:

[self.view setBackgroundColor:[UIColor groupTableViewBackgroundColor]]; 

Entonces, la vista tiene el mismo patrón que una vista de tabla común.

Esto funciona bien en iOS 4 y 5, pero en iOS 6 solo me da un fondo blanco.

¿Esto está en desuso? Si es así, ¿cómo puedo reemplazarlo?

Gracias

Este método quedará obsoleto durante el progtwig de inicialización 6.0 Si desea tener un fondo en su propia vista que se asemeje al fondo de la vista de tabla, entonces debe crear una vista de tabla vacía y colocarla detrás de su contenido.

Primero, agregue esto a su viewDidLoad :

 self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBackground.png"]]; 

O

 self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBackground.png"]]; 

A continuación, agregue estas imágenes a su aplicación:

tableViewBackground.png

tableViewBackground.png

tableViewBackground@2x.png

tableViewBackground@2x.png

UIColor una categoría UIColor para reemplazar groupTableViewBackgroundColor :

 @interface UIColor (UITableViewBackground) + (UIColor *)groupTableViewBackgroundColor; @end @implementation UIColor (UITableViewBackground) + (UIColor *)groupTableViewBackgroundColor { __strong static UIImage* tableViewBackgroundImage = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ UIGraphicsBeginImageContextWithOptions(CGSizeMake(7.f, 1.f), NO, 0.0); CGContextRef c = UIGraphicsGetCurrentContext(); [[self colorWithRed:185/255.f green:192/255.f blue:202/255.f alpha:1.f] setFill]; CGContextFillRect(c, CGRectMake(0, 0, 4, 1)); [[self colorWithRed:185/255.f green:193/255.f blue:200/255.f alpha:1.f] setFill]; CGContextFillRect(c, CGRectMake(4, 0, 1, 1)); [[self colorWithRed:192/255.f green:200/255.f blue:207/255.f alpha:1.f] setFill]; CGContextFillRect(c, CGRectMake(5, 0, 2, 1)); tableViewBackgroundImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); }); return [self colorWithPatternImage:tableViewBackgroundImage]; } @end 

Esta solución también permite ajustar el aspecto del fondo. Siéntase libre de cambiar el código de dibujo 🙂

En iOS6 SKD, los comentarios en UIInterface.h sugieren lo siguiente:

Los fondos de vista de tabla de estilo de grupo ya no se pueden representar con un color simple. Si desea tener un fondo en su propia vista que se parece al fondo de la vista de tabla, entonces debe crear una vista de tabla vacía y colocarla detrás de su contenido.

Este método quedará obsoleto durante el progtwig de semilla 6.0

Una solución simple es establecer el fondo con valores RGB equivalentes:

 [self.view setBackgroundColor:[UIColor colorWithRed:215.0/255.0 green:217.0/255.0 blue:223.0/255.0 alpha:1.0]]; 

Puede configurar el color de fondo de la vista en blanco o lo que quiera en el xib para suprimir la advertencia.

Si ayuda a alguien, aquí está específicamente lo que estoy haciendo en mi vista personalizada para obtener este fondo (usando la pista del Sr. Beloeuvre)

 - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor clearColor]; UITableView *tv = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped]; [self.view addSubview:tv]; [self.view sendSubviewToBack:tv]; // ... } 

Prueba esto:

 [myTableView setBackgroundView:nil]; [myTableView setBackgroundView:[[[UIView alloc] init] autorelease]]; 

Es posible que tenga dificultades para ubicar la vista si usa el guión gráfico y tiene muchas vistas. Puede hacer clic en el botón “Mostrar el editor de versiones” en la esquina superior derecha. Esto cambiará la vista de historia a vista de texto XML. Busque “groupTableViewBackGroundColor”. Deberías encontrar vistas con este atributo.

enter image description here

Es una buena idea usar métodos estándar para versiones anteriores de iOs. Así que mejoré la solución de James Boutcher:

 + (void)setBackgroundColorForTableView:(UITableView*) tableView { UIColor* color = [UIColor whiteColor]; NSString* version = [[UIDevice currentDevice] systemVersion]; if([version floatValue] < 6.0) { tableView.backgroundColor = color; } else { tableView.backgroundView = nil; UIView* bv = [[UIView alloc] init]; bv.backgroundColor = color; tableView.backgroundView = bv; [bv release]; } } 

Elaborando sobre la solución de @ NSElvis, aquí está el activo de fondo de vista de tabla agrupado idéntico (es lo suficientemente ancho para que no se obtengan efectos divertidos en la orientación horizontal)

back-tableview@2x.png

Para usarlo, simplemente hazlo

 [YOUR_VIEW setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"back-tableview"]]];