ボタンの外観を変更しようとしていて、以下の簡単なコードのようにグラデーションを適用できない理由を理解しようとして長い時間を費やしました:
[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.playButton
とself.view
、美しい赤緑のグラデーション レイヤーがUIView
.
IBOutlet
カスタムボタンが次のように定義されていることに注意してください。
@property (weak, nonatomic) IBOutlet UIButton *playButton;
どんな助けでも大歓迎です。
更新と修正
グラデーションの代わりにスケーラブルな画像を使用するようにボタンを変更するとき、( rokjarcのアイデアを試した後) グラデーション コードを再度コメントアウトするのを忘れ、ボタンimageView.content
をUIViewContentModeScaleToFill
表示されるグラデーションに変更するとき...
self.playButton.imageView.contentMode = UIViewContentModeScaleToFill;
だからありがとうrokjarc私は推測します:D