How to create a custom button with highlighted

I am creating a custom button because I want a gradient button. therefore, I use this code to implement it.

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

Now the gradient is complete. But when I click this button, there is no highlighted status on it.

I just want it to deepen when I click it. Does anyone know how to implement this? Thanks

+4
source share
2 answers

If you are a subclass of UIButton , you can override the setHighlighted method. Here you can set another Gradient button on the button.

 - (void)setHighlighted:(BOOL)highlighted { [super setHighlighted:highlighted]; } 
+1
source

Using gradients There is a lot of headache for UIButton and heavy memory as well, especially if you also want a dedicated state.

check out this tutorial . which will explain the use of images and gradients for UIButton.

Using images is pretty simple and always suggested,

0
source

Source: https://habr.com/ru/post/1480702/


All Articles