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

これでグラデーションが完成しました。しかし、このボタンを押すと、強調表示されたステータスはありません。

押すと色が濃くなって欲しい。これを実装する方法を知っている人はいますか?ありがとう

4

2 に答える 2

1

サブクラス化UIButtonすると、setHighlighted メソッドをオーバーライドできます。ここではGradient、ボタンに別の設定を行うことができます。

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

}
于 2013-05-14T12:04:24.123 に答える
0

UIButton にグラデーションを使用することは頭痛の種であり、特に強調表示された状態も必要な場合は、メモリにも負担がかかります。

このチュートリアルをご覧ください。UIButton の画像とグラデーションの使用について説明します。

画像の使用はかなり簡単で、常に推奨されています。

于 2013-05-14T12:19:40.950 に答える