如何制作突出显示的自定义按钮[重复]

Posted

技术标签:

【中文标题】如何制作突出显示的自定义按钮[重复]【英文标题】:How to make a custom button with highlighted [duplicate] 【发布时间】:2013-05-08 16:44:14 【问题描述】:

我创建了一个自定义按钮,因为我想要一个渐变按钮。所以我用这段代码来实现它。

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

现在渐变已经完成。但是当我按下这个按钮时,它上面没有突出显示的状态。

我只想按下时它的颜色变深了。 有谁知道如何实现这个?谢谢

【问题讨论】:

能否也添加自定义按钮的实现 我这里添加子类代码。我只是想按下按钮的颜色可以加深。我必须自己改变颜色。就像按钮是红色的,按下时应该加深。如果是这样,我必须知道加深颜色的成分。呃,我不知道如何获得RGB颜色。谢谢 【参考方案1】:

为 UIButton 使用渐变非常令人头疼,而且内存也很重,特别是如果您还想要突出显示的状态。

看看这个Tutorial。这将解释 UIButton 中图像和渐变的使用。

使用图像相当容易,并且总是被建议,

【讨论】:

是的。好的建议,我会尝试深入了解 UIButton 和 UIControl。谢谢。【参考方案2】:

如果您继承UIButton,您可以覆盖setHighlighted 方法。这里可以在按钮上设置不同的Gradient

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


【讨论】:

以上是关于如何制作突出显示的自定义按钮[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何制作适用于 IOS 和桌面浏览器的自定义全屏视频按钮?

如何在电子的自定义标题栏中显示/隐藏最大化/最小化按钮

如何在黑莓上突出显示焦点自定义按钮域(ImageButtonField)?

如何在单击另一个视图(即按钮)时突出显示自定义列表视图

如何防止 ListItem 内的 Button 突出显示

UIButton 状态