poner personalizar pantalla fondo control como color centro cambio cambiar bloqueo aparece iphone uibutton ios6 cagradientlayer

personalizar - no me aparece el centro de control iphone



Fondo de botón y cambio de gradiente desde iOS6 (3)

Para una aplicación, tuve que crear un UIButton relleno con un degradado y una imagen de fondo. Todo funcionó bien hasta que actualicé el sistema operativo de iOS 5.1 a iOS 6 recientemente lanzado.

Aquí hay dos capturas de pantalla del simulador:

Bueno, la primera captura de pantalla muestra lo que necesito (y lo hice), puedes ver un fondo marrón y el radient gris.

A continuación se muestra la captura de pantalla con los mismos botones, pero con iOS 6 en ejecución. Como puede ver, el degradado se ha desvanecido y aparece una extraña franja blanca en la parte inferior del UIButton .

Miré si esto es un error o algo, pero no he encontrado nada, ¿tal vez alguien aquí se ha enfrentado al mismo problema? Aquí está mi código para gradiente

CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = btnCountry.bounds; UIColor *colorTop = [UIColor colorWithRed:.992f green:.992f blue:.992f alpha:1]; UIColor *colorBot = [UIColor colorWithRed:.788f green:.769f blue:.745f alpha:1]; gradient.colors = [NSArray arrayWithObjects:(id)[colorTop CGColor], (id)[colorBot CGColor], nil]; gradient.borderColor = [UIColor colorWithRed:.545f green:.506f blue:.459f alpha:1].CGColor; gradient.borderWidth = 1; gradient.masksToBounds = YES; gradient.cornerRadius = 11; [[btnCountry layer] insertSublayer:gradient atIndex:0];


Insertar la capa en la posición de índice 1 funciona para mí.

Probablemente la mejor solución es verificar la versión de iOS y, dependiendo de eso, insertar en el índice 0 o 1.


Este es un problema realmente extraño en ios6, me enfrenté al mismo problema al configurar degradados como lo haría normalmente:

[myButton.layer insertSublayer:gradient atIndex:0];

así que traté de cambiar la línea de fondo a esto, que funcionó perfectamente bien en iOS 6 y también en versiones inferiores de IOS

[myButton.layer insertSublayer:gradient below:myButton.titleLabel.layer];

espero que esto ayude


Como puede ver en mi comentario, el problema vino de la clase UIGroupTableViewCellBackground , simplemente lo UIGroupTableViewCellBackground . Creo que esta no es una solución "limpia", si tienes una mejor me alegraré de escucharla :-)

Aquí está el código:

for(UIView* subView in btnCountry.subviews) if([subView isKindOfClass:NSClassFromString(@"UIGroupTableViewCellBackground")]) [subView setHidden:YES];