2013-05-14 53 views
4

我創建了自定義按鈕,因爲我想要一個漸變按鈕。所以我使用這個代碼來實現它。如何製作高亮顯示的自定義按鈕

@implementation CustomButton 


- (id)initWithFrame:(CGRect)frame 
{ 
    if((self = [super initWithFrame:frame])){ 
     [self setupView]; 
    } 

    //[self addObserver:self forKeyPath:@"highlighted" options:0 context:nil]; 
    return self; 
} 

- (void)awakeFromNib { 
    [self setupView]; 
} 

# pragma mark - main 

- (void)setupView 
{ 
    self.layer.cornerRadius = 10; 
    self.layer.borderWidth = 1.0; 
    self.layer.borderColor = [UIColor colorWithRed:167.0/255.0 green:140.0/255.0 blue:98.0/255.0 alpha:0.25].CGColor; 
    self.layer.shadowColor = [UIColor blackColor].CGColor; 
    self.layer.shadowRadius = 1; 
    [self clearHighlightView]; 

    CAGradientLayer *gradient = [CAGradientLayer layer]; 
    gradient.frame = self.layer.bounds; 
    gradient.cornerRadius = 10; 
    gradient.colors = [NSArray arrayWithObjects: 
         (id)[UIColor colorWithWhite:1.0f alpha:0.4f].CGColor, 
         (id)[UIColor colorWithWhite:1.0f alpha:0.2f].CGColor, 
         (id)[UIColor colorWithWhite:0.75f alpha:0.2f].CGColor, 
         (id)[UIColor colorWithWhite:0.4f alpha:0.2f].CGColor, 
         (id)[UIColor colorWithWhite:1.0f alpha:0.4f].CGColor,       nil]; 
    // float height = gradient.frame.size.height; 
    gradient.locations = [NSArray arrayWithObjects: 
          [NSNumber numberWithFloat:0.0f], 
          [NSNumber numberWithFloat:0.5f], 
          [NSNumber numberWithFloat:0.5f], 
          [NSNumber numberWithFloat:0.8f], 
          [NSNumber numberWithFloat:1.0f], 
          nil]; 
    [gradient setBackgroundColor:[UIColor redColor].CGColor]; 
    [self.layer insertSublayer:gradient atIndex:0]; 
} 

現在漸變已完成。但是當我按下這個按鈕時,它沒有突出顯示的狀態。

我只是想當按下它的顏色已經加深。 有誰知道如何實現這個?謝謝

+1

您可以添加自定義按鈕的執行情況以及請 – Ushan87 2013-05-14 12:02:15

+0

我在這裏添加子類代碼。我只是想按下按鈕的顏色可以加深。我是否必須自己改變顏色。就像按鈕是紅色的那樣,按下時應該加深。如果是這樣,我必須知道深化顏色的組成部分。呃,我不知道如何獲得RGB顏色。謝謝 – zedzhao 2013-05-14 12:16:40

回答

1

如果你的子類UIButton你可以覆蓋setHighlighted方法。在這裏你可以在按鈕上設置不同的Gradient

- (void)setHighlighted:(BOOL)highlighted 
{ 
    [super setHighlighted:highlighted]; 

} 
0

使用漸變色的UIButton是很多頭痛的,重的內存爲好,特別是如果想要可高亮顯示狀態也。

看看這個Tutorial。這將解釋爲UIButton使用圖像和漸變。

使用圖像是相當容易的,總是建議,

+0

是的。很好的建議,我會盡力讓UIButton和UIControl深入瞭解。謝謝。 – zedzhao 2013-05-14 12:53:12