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];