iPhone iOS 如何向按钮文本或图像下的 UIButton 添加线性渐变?

标签 iphone objective-c ios uibutton gradient

我正在通过向按钮添加线性渐变来创建外观精美的 UI 按钮。但是我不确定我需要在哪个索引处添加渐变。我目前的代码将渐变放置在图像/文本上。

如何将子层插入文本/图像子层下的 UIButton?保持按钮的文本和图像可见对我来说很重要!

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

最佳答案

将其添加到您的自定义按钮层:

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

关于iPhone iOS 如何向按钮文本或图像下的 UIButton 添加线性渐变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585103/

相关文章:

ios - IOS7中的UIButton背景图片

ios - 导航栏在取消 "Add to Exsting Contact" Controller 时消失

iphone - 浮点函数返回值

ios - 如何在 Swift 中使用命名空间?

iOS - 如何下载音频文件

objective-c - 属性属性 "retain"似乎不起作用?

objective-c - 将多个 CGPath 合并在一起以形成一条路径

ios - 使用 NSLocale 根据国家/地区代码或国家/地区名称获取货币符号

ios - TIC TCP 连接失败 1 :54 Err(54)

objective-c - 在 IOS 中关闭应用程序时将调用什么委托(delegate)方法?