标签: cagradientlayer

使用CAGradientLayer进行角度/圆度渐变

如何使用CAGradientLayer最有效地围绕圆/角度绘制渐变?

在这个项目的帮助下,我在下面做了一个.它使用位图上下文进行绘制,但CAGradientLayer效率更高.

不幸的是,我只能弄清楚如何用它来制作线性渐变.

geometry gradient core-animation ios cagradientlayer

6
推荐指数
2
解决办法
2869
查看次数

有角度的梯度层

我有自定义UIView类在Swift 2中呈现渐变.我正在努力制作一个有角度的渐变,以便从左上角到右下角绘制.有人可以帮我一点吗?

import UIKit

class GradientView: UIView {

    let gradientLayer = CAGradientLayer()

    override func awakeFromNib() {
        // 1
        self.backgroundColor = ColorPalette.White

        // 2
        gradientLayer.frame = self.bounds

        // 3
        let color1 = ColorPalette.GrdTop.CGColor as CGColorRef
        let color2 = ColorPalette.GrdBottom.CGColor as CGColorRef
        gradientLayer.colors = [color1, color2]

        // 4
        gradientLayer.locations = [0.0, 1.0]

        // 5
        self.layer.addSublayer(gradientLayer)
    }

}
Run Code Online (Sandbox Code Playgroud)

我怀疑这应该是别的,但无论我输入什么都没有变化.

gradientLayer.locations = [0.0, 1.0]
Run Code Online (Sandbox Code Playgroud)

gradient uiview cagradientlayer swift swift2

6
推荐指数
2
解决办法
7555
查看次数

带有渐变的iOS UIProgressView

是否可以使用从左到右的渐变创建自定义ui进度视图?

我用以下代码尝试过:

    let gradientLayer = CAGradientLayer()
    gradientLayer.frame = self.frame

    gradientLayer.anchorPoint = CGPoint(x: 0, y: 0)
    gradientLayer.position = CGPoint(x: 0, y: 0)

    gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0);
    gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.0);

    gradientLayer.colors = [
        UIColor.red,
        UIColor.green
    ]

    // Convert to UIImage
    self.layer.insertSublayer(gradientLayer, at: 0)
    self.progressTintColor = UIColor.clear
    self.trackTintColor = UIColor.black
Run Code Online (Sandbox Code Playgroud)

但不幸的是,梯度不可见.还有其他想法吗?

gradient progress uiprogressview ios cagradientlayer

6
推荐指数
2
解决办法
4531
查看次数

将渐变图层添加到 tableview

我一直试图弄清楚如何向 tableView 添加渐变图层,并尝试了很多不同的东西,但我永远无法让表格视图单元格显示出来,无论我有多少带来的子视图或发送子视图做。

let gradientLayer = CAGradientLayer()

gradientLayer.frame = view.bounds

gradientLayer.colors = [UIColor(red: 125/255.0, green: 125/255.0, blue: 125/255.0, alpha: 1.0).cgColor, UIColor(red: 125/255.0, green: 125/255.0, blue: 255/255.0, alpha: 1.0).cgColor]

gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)

tableView.layer.addSublayer(gradientLayer)
Run Code Online (Sandbox Code Playgroud)

不管带来子视图和发送子视图的组合有多少,我似乎总是得到这个并且单元格不会出现在前面:

在此处输入图片说明

有谁知道如何解决这个问题,或者如何做我想做的另一种方式来使它工作?

非常感谢任何帮助,谢谢。

uitableview ios cagradientlayer swift

6
推荐指数
1
解决办法
1466
查看次数

如何从其超级图层中删除 CAGradientLayer

我将图层添加到我的视图中:

    [self.layer insertSublayer:_gradient above:_another.layer];
Run Code Online (Sandbox Code Playgroud)

那么即使我在超级层上调用needDisplay,它似乎也不会被删除:

        [_gradient removeFromSuperlayer];
Run Code Online (Sandbox Code Playgroud)

我怎样才能删除它?

calayer uiview ios cagradientlayer

5
推荐指数
1
解决办法
3910
查看次数

从黑色到完全透明的快速渐变

我正在尝试使用swift应用CAGradientLayer,并且我希望它从黑色渐变为透明。

我以为,将任何颜色与alpha: 0都会呈现相同的“透明”颜色。事实并非如此。白色与alpha: 0仍然有点白色,红色与alpha: 0仍然有点红色...

我不需要任何色彩,只要透明即可。黑色不那么黑,直到没有颜色为止,例如,您可以完全看到其下方的视图。

gradientLayer.colors = [UIColor(hex: 0x000000, alpha: 0.4).cgColor,
                        UIColor(hex: 0x6D6D6D, alpha: 0.3).cgColor,
                        UIColor.white.withAlphaComponent(0.0).cgColor]
gradientLayer.locations = [0.0, 0.3, 1.0]
Run Code Online (Sandbox Code Playgroud)

如果将图层应用于灰色图片,则很容易看到它不是透明的而是白色的:

在此处输入图片说明

编辑1:

gradientLayer.frame = self.gradientView.bounds
gradientLayer.masksToBounds = true
gradientLayer.colors = [UIColor.black.withAlphaComponent(1.0).cgColor, UIColor.black.withAlphaComponent(0.0).cgColor]
gradientLayer.locations = [0.0, 1.0]
gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0)
self.gradientView.layer.addSublayer(gradientLayer)
Run Code Online (Sandbox Code Playgroud)

输出:

在此处输入图片说明

calayer ios cagradientlayer swift

5
推荐指数
1
解决办法
1821
查看次数

CAGradientLayer 不显示

我已经查看了类似问题的许多其他答案,但似乎没有一个答案可以解决我的问题,因此寻求一些帮助。

我正在尝试将垂直渐变应用于 UIButton,但渐变层没有显示在我的视图中。这是相关代码:

let darkPurple = UIColor(displayP3Red: 61.0/255.0, green: 3.0/255.0, blue: 110.0/255.0, alpha: 1.0)
let lightPurple = UIColor(displayP3Red: 90.0/255.0, green: 32.0/255.0, blue: 130.0/255.0, alpha: 1.0)

let addButton = UIButton(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
addButton.title = "Start counting"
addButton.layer.cornerRadius = 30.0
addButton.layer.borderWidth = 1.0
addButton.layer.borderColor = darkPurple.cgColor
addButton.translatesAutoresizingMaskIntoConstraints = false
myView.addSubview(addButton)
addButton.applyGradient(with: [lightPurple, darkPurple], gradientOrientation: .vertical)
Run Code Online (Sandbox Code Playgroud)

...以及应用渐变的代码:

typealias GradientPoints = (startPoint: CGPoint, endPoint: CGPoint)

enum GradientOrientation {
  case topRightBottomLeft
  case topLeftBottomRight
  case horizontal
  case vertical

  var startPoint: …
Run Code Online (Sandbox Code Playgroud)

xcode uibutton ios cagradientlayer swift

5
推荐指数
2
解决办法
3792
查看次数

如何使用渐变和突出显示创建UIButton?

我正在尝试创建一个渐变背景的UIButton.我选择时工作正常,但按钮不突出显示(默认行为是按钮变暗).

这是我的按钮:

-(UIButton *)createLoginButtonForSize:(CGSize)size {
    UIButton *loginButton = [UIButton buttonWithType:UIButtonTypeCustom];
    loginButton.translatesAutoresizingMaskIntoConstraints = FALSE;
    loginButton.layer.cornerRadius = 8;
    loginButton.titleLabel.text = @"Login";

    [loginButton addTarget:self action:@selector(loginCheck:) forControlEvents:UIControlEventTouchUpInside];


    [loginButton addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[loginButton(WIDTH)]"
                                                                        options:0
                                                                        metrics:@{@"WIDTH": [NSNumber numberWithFloat:size.width]}
                                                                          views:NSDictionaryOfVariableBindings(loginButton)]];

    [loginButton addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[loginButton(HEIGHT)]"
                                                                        options:0
                                                                        metrics:@{@"HEIGHT": [NSNumber numberWithFloat:size.height]}
                                                                          views:NSDictionaryOfVariableBindings(loginButton)]];

    CAGradientLayer *layer = [UIColor greenGradient];
    layer.frame = CGRectMake(0, 0, size.width, size.height);
    layer.cornerRadius = 8;

    [loginButton.layer insertSublayer:layer atIndex:0];

    return loginButton;
}
Run Code Online (Sandbox Code Playgroud)

我需要自己处理突出显示吗?

objective-c uibutton ios cagradientlayer

4
推荐指数
1
解决办法
4034
查看次数

如何更改CAGradientLayer的颜色像屏幕保护程序?

我创建UIView了应用CAGradientLayer色彩效果,因为我附加了Image Bellow.现在在这里我想要像屏幕保护程序一样平滑地改变它的渐变颜色从上到下.我已经尝试使用NStimer那个位Done但它的颜色变化CAGradientLayer看起来像混蛋.

在此输入图像描述

对于上面我使用Bellow方法代码: -

Timer =  [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(TIMER) userInfo:nil repeats:NO];

-(void)TIMER
{
        Count++;
        [view_Color1 removeFromSuperview];

        view_Color1 = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 341)];
        CAGradientLayer *gradient = [CAGradientLayer layer];
        gradient.frame = self.view_Color.bounds;

        if (Count == 1)
        {
            gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor greenColor] CGColor], (id)[[UIColor  colorWithRed:44/255.0 green:255/255.0 blue:255/255.0 alpha:1.0f] CGColor], (id)[[UIColor  colorWithRed:0/255.0 green:0/255.0 blue:254/255.0 alpha:1.0f] CGColor], (id)[[UIColor  colorWithRed:252/255.0 green:0/255.0 blue:255/255.0 alpha:1.0f] CGColor], (id)[[UIColor  colorWithRed:252/255.0 green:0/255.0 blue:6/255.0 alpha:1.0f] CGColor], (id)[[UIColor  colorWithRed:253/255.0 green:131/255.0 blue:6/255.0 alpha:1.0f]CGColor], …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c uiview ios cagradientlayer

4
推荐指数
1
解决办法
1478
查看次数

给 CAGradientLayer 添加遮罩使 UIBezierPath 消失

我想向带有渐变的视图添加内边框。以下代码有效并给了我这个结果

在此处输入图片说明

import UIKit

class InnerGradientBorderView: UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
        backgroundColor = UIColor.clear
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        backgroundColor = UIColor.clear
    }

    override func draw(_ rect: CGRect) {
        super.draw(rect)

        addGradientInnerBorder(width: 8, color: FlatWhite())
    }

    func addGradientInnerBorder(width: CGFloat, color: UIColor) {

        // Setup
        let topLeftO = CGPoint(x: 0, y: 0)
        let topLeftI = CGPoint(x: width, y: width)

        let topRightO = CGPoint(x: frame.width, y: 0)
        let topRightI = CGPoint(x: frame.width - width, y: width)

        let bottomLeftO …
Run Code Online (Sandbox Code Playgroud)

cashapelayer ios uibezierpath cagradientlayer swift

4
推荐指数
1
解决办法
1011
查看次数