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.playButtonto时,self.view它会在UIView.

可能值得注意的是,我将自定义按钮定义为IBOutlet

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

任何帮助是极大的赞赏。

更新和修复

将按钮更改为使用可缩放图像而不是渐变时,我忘记重新注释掉渐变代码(在尝试rokjarc的想法之后)以及将按钮更改为imageView.content显示UIViewContentModeScaleToFill的渐变时......

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 回答