3

ボタンの外観を変更しようとしていて、以下の簡単なコードのようにグラデーションを適用できない理由を理解しようとして長い時間を費やしました:

[self.playButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
self.playButton.backgroundColor = [UIColor blackColor];

CAGradientLayer *gradient = [[CAGradientLayer alloc] init];
gradient.frame = self.playButton.bounds;
gradient.position = CGPointMake(self.playButton.bounds.size.width/2, self.playButton.bounds.size.height/2);
gradient.colors = [NSArray arrayWithObjects:
                   (id)[UIColor greenColor].CGColor,
                   (id)[UIColor redColor].CGColor,
                   nil];
gradient.locations = [NSArray arrayWithObjects:
                      [NSNumber numberWithFloat:0.0f],
                      [NSNumber numberWithFloat:1.0f],
                      nil];

[self.playButton.layer addSublayer:gradient];

実行しますが、何も起こりません。他の多くの人がそれを使用しており、 を に変更するself.playButtonself.view、美しい赤緑のグラデーション レイヤーがUIView.

IBOutletカスタムボタンが次のように定義されていることに注意してください。

@property (weak, nonatomic) IBOutlet UIButton *playButton;

どんな助けでも大歓迎です。

更新と修正

グラデーションの代わりにスケーラブルな画像を使用するようにボタンを変更するとき、( rokjarcのアイデアを試した後) グラデーション コードを再度コメントアウトするのを忘れ、ボタンimageView.contentUIViewContentModeScaleToFill表示されるグラデーションに変更するとき...

self.playButton.imageView.contentMode = UIViewContentModeScaleToFill;

だからありがとうrokjarc私は推測します:D

4

1 に答える 1

1

変更するだけ

self.playButton.backgroundColor = [UIColor blackColor];

self.playButton.backgroundColor = [UIColor clearColor];

テストしただけで動作します。

于 2012-12-28T18:56:30.613 に答える