iPhone的iOS如何添加线性渐变到button的文本或图像下的UIButton?

我正在通过添加线性渐变到button来创build看起来很漂亮的UIbuttons。 但是我不知道在哪个索引我需要添加渐变。 我目前在图像/文字上放置了渐变的代码。

如何在文本/图像子图层下插入子图层到UIButton? 对我来说保持一个button的文本和图像是可见的!

+(void)addLinearGradientToView:(UIView*)view TopColor:(UIColor*)topColor BottomColor:(UIColor*)bottomColor { for(CALayer* layer in view.layer.sublayers) { if ([layer isKindOfClass:[CAGradientLayer class]]) { [layer removeFromSuperlayer]; } } CAGradientLayer* gradientLayer = [CAGradientLayer layer]; gradientLayer.startPoint = CGPointMake(0.5, 0); gradientLayer.endPoint = CGPointMake(0.5,1); gradientLayer.frame = view.bounds; gradientLayer.colors = [NSArray arrayWithObjects:(id)[topColor CGColor], (id)[bottomColor CGColor], nil]; // [view.layer addSublayer:gradientLayer]; if(view.layer.sublayers.count>0) { [view.layer insertSublayer:gradientLayer atIndex:view.layer.sublayers.count-2]; }else { [view.layer addSublayer:gradientLayer]; } } 

将其添加到自定义button的图层中:

 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.frame = customButton.layer.bounds; gradientLayer.colors = [NSArray arrayWithObjects: (id)[UIColor colorWithWhite:1.0f alpha:0.1f].CGColor, (id)[UIColor colorWithWhite:0.4f alpha:0.5f].CGColor, nil]; gradientLayer.locations = [NSArray arrayWithObjects: [NSNumber numberWithFloat:0.0f], [NSNumber numberWithFloat:1.0f], nil]; gradientLayer.cornerRadius = customButton.layer.cornerRadius; [customButton.layer addSublayer:gradientLayer]; 

customButton是你自定义的UIButton

对于你想要实现的,总是插入索引0。

我最近写了一篇关于这种东西的文章 ,你可能会觉得有趣。

这是实现这个的代码

 CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = <#View Variable Name#>.bounds; gradient.colors = [NSArray arrayWithObjects:(id)([UIColor colorWithRed:0.337 green:0.596 blue:1.000 alpha:1.000].CGColor),(id)([UIColor colorWithRed:0.757 green:0.459 blue:1.000 alpha:1.000].CGColor),(id)([UIColor colorWithRed:0.310 green:0.835 blue:1.000 alpha:1.000].CGColor),nil]; gradient.startPoint = CGPointMake(0.5,0.0); gradient.endPoint = CGPointMake(0.5,1.0); [<#View Variable name#>.layer insertSublayer:gradient atIndex:0]; 

我有这个工具,可以很容易地select你的颜色,并自动输出梯度的代码。 非常方便,我每天使用itunes.apple.com/gb/app/gradient-creator/id1031070259?mt=12