2013-10-09 8 views
7

iOS6とそれ以前のボタンのように見える独自のカスタムボタンを作成するだけですが、iOS7ではカスタムボタンが透明になります。 プロパティadjustsImageWhenHighlightedをNOに設定しようとしましたが、何も変更されません。[self setAlpha:1.f]も機能しません。iOS7のカスタムボタンがハイライト表示されたときに透明になる

に続いて、私のinitメソッド:

-(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; 
} 

そして、私のメソッド呼び出し:iOS7のiOS6の魅力とNormalState仕事のように動作し

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

。あなたの助けUIButtonTypeCustomにボタン型プロパティを設定し

答えて

25

ため

おかげで動作するようです。問題が解決しました。

+0

あなたは先生です! – MegaManX

+1

ありがとう、これについて怒っていた! –

関連する問題