2013-10-09 15 views
7

Ich erstelle nur meine eigenen benutzerdefinierten Schaltfläche, die wie iOS6 und früheren Tasten scheinen, aber auf iOS7 meine CustomButton werden transparent, wenn markiert. Ich habe versucht, die Eigenschaft adjustImageWhenHighlighted bei NO, aber nichts zu ändern, [self setAlpha: 1.f] funktioniert auch nicht.iOS7 benutzerdefinierte Schaltfläche werden transparent, wenn markiert

Im Anschluss an meiner init-Methode:

-(void) baseInit:(CGRect)frame :(CGFloat *)colorsNormal :(CGFloat *)colorsHighlighted :(CGFloat *)colorsDisabled 
{ 

    self.layer.borderWidth=1.0f; 
    self.layer.borderColor=[[UIColor colorWithRed:0.67f green:0.67f blue:0.67f alpha:1.0f] CGColor]; 
    self.layer.cornerRadius=7.0f; 

    self.clipsToBounds = YES; 

    UIImage *image = [self generateUIImageWithGradient:frame :colorsNormal]; 
    [self setBackgroundImage:image forState:UIControlStateNormal]; 
    [self setTitleColor:[UIColor colorWithRed:0.22f green:0.33f blue:0.53f alpha:1.0f] forState:UIControlStateNormal]; 

    UIImage *image2 = [self generateUIImageWithGradient:frame :colorsHighlighted]; 
    [self setBackgroundImage:image2 forState:UIControlStateHighlighted]; 
    [self setTitleColor:[UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:1.0f] forState:UIControlStateHighlighted]; 

    UIImage *image3 = [self generateUIImageWithGradient:frame :colorsDisabled]; 
    [self setBackgroundImage:image3 forState:UIControlStateDisabled]; 
} 

-(id) generateUIImageWithGradient:(CGRect)frame :(CGFloat *)colors 
{ 
    CGSize size = CGSizeMake(frame.size.width, frame.size.height); 
    UIGraphicsBeginImageContextWithOptions(size, NO, 0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); 

    size_t gradientNumberOfLocations = 2; 
    CGFloat gradientLocations[2] = {0.0, 1.0}; 

    CGGradientRef gradient = CGGradientCreateWithColorComponents(colorspace, colors, gradientLocations, gradientNumberOfLocations); 

    CGContextDrawLinearGradient(context, gradient, CGPointMake(0, 0), CGPointMake(0, size.height), 0); 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

    CGGradientRelease(gradient); 
    CGColorSpaceRelease(colorspace); 
    UIGraphicsEndImageContext(); 

    return image; 
} 

Und mein Methodenaufruf:

CGFloat colorsNormal [] = {1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f}; 
CGFloat colorsHighlighted [] = {0.03f,0.55f,0.97f,1.0f,0.0f,0.37f,0.90f,1.0f}; 
CGFloat colorsDisabled [] = {1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f}; 

[self baseInit:rect :colorsNormal :colorsHighlighted :colorsDisabled]; 

, die wie ein Zauber auf iOS6 arbeiten und NormalState Arbeit an iOS7.

Danke für Ihre Hilfe

Antwort

25

die Schaltfläche Typ-Eigenschaft auf UIButtonTypeCustom Set zu funktionieren scheint. Problem gelöst.

+0

Sie sind ein Genie! – MegaManX

+1

Vielen Dank, war verrückt danach! –

Verwandte Themen