我創建了自定義按鈕,因爲我想要一個漸變按鈕。所以我使用這個代碼來實現它。如何製作高亮顯示的自定義按鈕
@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];
}
現在漸變已完成。但是當我按下這個按鈕時,它沒有突出顯示的狀態。
我只是想當按下它的顏色已經加深。 有誰知道如何實現這個?謝謝
您可以添加自定義按鈕的執行情況以及請 – Ushan87 2013-05-14 12:02:15
我在這裏添加子類代碼。我只是想按下按鈕的顏色可以加深。我是否必須自己改變顏色。就像按鈕是紅色的那樣,按下時應該加深。如果是這樣,我必須知道深化顏色的組成部分。呃,我不知道如何獲得RGB顏色。謝謝 – zedzhao 2013-05-14 12:16:40