For an app I had to create a UIButton
filled with a gradient and a background image. Everything worked fine until I upgraded the OS from iOS 5.1 to the recently released iOS 6.
Here are two screenshots from the simulator :
Well, the first screenshot shows what I need (and did), you can see a brown background and the grey radient.
Below is the screenshot with the same buttons but with iOS 6 running. As you can see the gradient has vanished and a strange white strip has appeared at the bottom of the UIButton
.
I've looked if this is a bug or something but I've found nothing, maybe someone here has faced the same problem? Here is my code for gradient
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];
This is a really strange problem in ios6 ,I faced the same problem when setting gradient like you typically would:
so I tried changing the bottom line to this which worked perfectly fine in iOS 6 and also in lower versions of IOS
hope this will help
As you can see in my comment the problem came from the class
UIGroupTableViewCellBackground
, I just hide it. I think this is not a "clean" solution, if you have a better one İ'll be glad to hear about it :-)Here is the code :
Inserting the layer at index position 1 works for me.
Probably the best solution is to check the iOS version and depending on that, insert at index 0 or 1.