그라디언트 단추가 있기 때문에 사용자 지정 단추를 만듭니다. 그래서이 코드를 사용하여 구현합니다.사용자 지정 단추를 강조 표시하는 방법
@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
내가 여기 서브 클래스 코드를 추가하십시오뿐만 아니라 사용자 정의 버튼의 구현을 추가 할 수 있습니다. 버튼을 누르면 색이 깊어지기를 원할뿐입니다. 색상을 직접 변경해야합니까? 단추가 빨간색이면 누르는 것처럼 깊어 야합니다. 그렇다면 심도있는 색상의 구성 요소를 알아야합니다. 어, RGB 색상을 얻는 방법을 모르겠습니다. 감사합니다 – zedzhao