标签: cagradientlayer

CAGradientLayer类型 - 有什么意义?

根据iOS CAGradientLayer文档,type属性只有一个有效值kCAGradientLayerAxial,它也恰好是默认值.这个属性的目的对我来说是一个谜,因为我想要实现径向CAGradientLayer而不覆盖drawLayer:inContext,并且希望找到类似于kCAGradientLayerRadial的东西.任何照明都赞赏.

cocoa core-graphics objective-c ios cagradientlayer

3
推荐指数
1
解决办法
1636
查看次数

斯威夫特:彩虹色圈

嗨,我正在尝试在swift中编写颜色选择器,看起来像这样.

在此输入图像描述

但到目前为止,我成功了.

在此输入图像描述

画圆很容易,继承人代码......

 fileprivate func setupScene(){

    let circlePath: UIBezierPath = UIBezierPath(arcCenter: CGPoint(x: self.wheelView.frame.width/2, y: self.wheelView.frame.height/2), radius: CGFloat(self.wheelView.frame.height/2), startAngle: CGFloat(0), endAngle:CGFloat(Double.pi * 2), clockwise: true)

    let shapeLayer = CAShapeLayer()
    shapeLayer.path = circlePath.cgPath

    //color inside circle
    shapeLayer.fillColor = UIColor.clear.cgColor
    //colored border of circle
    shapeLayer.strokeColor = UIColor.purple.cgColor
    //width size of border
    shapeLayer.lineWidth = 10

    wheelView.layer.addSublayer(shapeLayer)
}

@IBOutlet var wheelView: UIView!
Run Code Online (Sandbox Code Playgroud)

但是现在我不知道如何插入彩虹色......我尝试了CAGradientLayer,但它不可见.有什么好建议吗?

gradient ios cagradientlayer swift

3
推荐指数
1
解决办法
2376
查看次数

在最简单的可能用例中,CAGradientLayer与"exc_bad_access"崩溃

一个普通的UIView子类,只有以下代码:

- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        // Initialization code

        CAGradientLayer* gradientLayer = [CAGradientLayer layer];
        gradientLayer.colors = [NSArray arrayWithObjects:[UIColor whiteColor], [UIColor blackColor], nil];
        gradientLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], [NSNumber numberWithFloat:1.0], nil];

        [self.layer addSublayer:gradientLayer];

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

使用EXC_BAD_ACCESS杀死运行时(不,在你问之前没有僵尸).

此外,它不是CAGradientLayer过度释放 - 在图层上放置多个浮动保留没有效果.

(顺便说一下,我从来没有见过CAGradientLayer实际工作,在我参与的任何项目上.我认为它被诅咒:).我不会使用它,除了我需要动画渐变,Apple的CGGradient类只支持const数组,这使动画代码容易出错)

calayer ios cagradientlayer

2
推荐指数
1
解决办法
768
查看次数

如何在iPhone中将渐变色设置为UILabel的背景

我使用以下代码将渐变颜色设置为标签的背景,但没有影响我做错了什么?代码在这里:

    [self.teamName setTextColor:[UIColor whiteColor]];
    [self.teamName setBackgroundColor:[UIColor clearColor]];
    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = self.teamName.bounds;
    gradientLayer.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor]CGColor], (id)[[UIColor blackColor]CGColor], nil];
    [self.teamName.layer insertSublayer:gradientLayer atIndex:0];
Run Code Online (Sandbox Code Playgroud)

uilabel cagradientlayer

2
推荐指数
1
解决办法
5034
查看次数

CAGradientLayer 径向渐变

我使用以下代码来设置渐变颜色:

NSArray *locations = @[@0.0, @0.1f];

CAGradientLayer *headerLayer = [CAGradientLayer layer];
headerLayer.colors = colors;
headerLayer.locations = locations;
Run Code Online (Sandbox Code Playgroud)

如何制作径向渐变颜色?

我想我必须改变位置,但我没有猜到正确的位置。另外,我试过这个:

headerLayer.anchorPoint = CGPointMake(0.5, 1.0);
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

谢谢。

objective-c uiview cagradientlayer

2
推荐指数
1
解决办法
4883
查看次数

迅速。向表视图添加渐变会隐藏内容

我有一张桌子,它运作良好。但是我必须在背景上添加渐变。我用viewDidLoad中的这段代码做到了:

gradientLayer.frame = self.view.bounds
let color1 = UIColor.blueColor().CGColor as CGColorRef
let color2 = UIColor.redColor().CGColor as CGColorRef
gradientLayer.colors = [color1, color2]
gradientLayer.locations = [0.0, 1.0]
gradientLayer.startPoint = CGPoint(x: 1, y: 0)
gradientLayer.endPoint = CGPoint(x: 0, y: 0)
self.view.layer.addSublayer(gradientLayer)
self.view.backgroundColor = UIColor.greenColor()
Run Code Online (Sandbox Code Playgroud)

但是现在我看不到表视图的任何内容。

有人可以帮帮我吗?

uitableview uiview ios cagradientlayer swift

2
推荐指数
1
解决办法
1126
查看次数

CAGradient图层在视图中不可见

我尝试在我使用Core Graphics制作的饼图中添加CAGradient效果.事实证明,我无法理解如何将它应用于作为CGPath一部分的视图......

override func draw(_ rect: CGRect)
    {
    ...
    func arc(myRadius: CGFloat, myStartAngle: CGFloat, myEndAngle: CGFloat) {
        // This is the pie chart segment
        context?.setFillColor(phenotypeColor.cgColor)
        context?.move(to: center)
        context?.addArc(center: center, radius: finalRadius, startAngle: myStartAngle, endAngle: myEndAngle, clockwise: true)
        context?.fillPath()

        (...)
        let gradientLayer = CAGradientLayer()
        gradientLayer.frame = self.bounds
        gradientLayer.colors = [UIColor.red, UIColor.blue]
        self.layer.addSublayer(gradientLayer)
    }
Run Code Online (Sandbox Code Playgroud)

我在屏幕上看不到任何渐变(只有白色背景......).最后,clip在保存状态后我也尝试了上下文juste,但我不确定是否剪切了任何东西,因为我没有看到任何渐变(无论是在整个视图上还是仅在片段上).我阅读了文档,但它没有清楚(在我的情况下......).

core-graphics cgcontext ios cagradientlayer swift

2
推荐指数
1
解决办法
436
查看次数

在UIBezierPath图上应用渐变层

这是我第一次问一个问题,请原谅我不是很彻底。

基本上,我试图在绘制为图形的UIBezierPath之上应用渐变层。

这是我的图:

正态图

这是我要使用的渐变层:

梯度图

这是我尝试绘制的图形:

let path = quadCurvedPathWithPoints(points: points)
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.blue.cgColor
shapeLayer.fillColor = UIColor.white.cgColor
shapeLayer.position = CGPoint(x: 0, y: 0)
shapeLayer.lineWidth = 1.0
Run Code Online (Sandbox Code Playgroud)

显然,这会用蓝色笔触填充图形,但是现在我尝试将白色渐变为绿色。我这样做的方式不起作用。结果如下:

失效梯度图

这是我正在努力的代码:

let startColor = UIColor.white.withAlphaComponent(0.5)
let endColor = UIColor.green

let gradient = CAGradientLayer()
gradient.colors = [startColor.cgColor, endColor.cgColor]
gradient.startPoint = CGPoint(x: 0.0, y: 0.5)
gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
gradient.frame = path.bounds
let shapeMask = CAShapeLayer()
shapeMask.path = path.cgPath
gradient.mask = shapeLayer
sparkLineView.layer.addSublayer(gradient)
Run Code Online (Sandbox Code Playgroud)

core-graphics uibezierpath cagradientlayer swift

2
推荐指数
1
解决办法
534
查看次数

渐变层未显示在 UIButton 上

我正在尝试创建一个可以在整个应用程序中使用的自定义 UIButton。我想应用渐变作为其背景,但是使用这个非常简单的代码没有显示渐变。如果有人能在下面的代码中指出我的错误,那将非常有帮助。

class GradientBtn: UIButton {

    let gradientLayer = CAGradientLayer()

    override init(frame: CGRect) {
        super.init(frame: frame)

        themeConfig()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        themeConfig()
    }

    private func themeConfig() {
        //shadow
        layer.shadowOffset = CGSize.zero
        layer.shadowColor = UIColor.gray.cgColor
        layer.shadowOpacity = 1.0

        //titletext
        setTitleColor(Theme.colorWhite, for: .normal)
        titleLabel?.font = UIFont(name: Theme.fontAvenir, size: 18)

        //rounded corners
        layer.cornerRadius = frame.size.height / 2

        //gradient
        gradientLayer.locations = [0.0, 1.0]
        gradientLayer.colors = [Theme.colorlightBlue, Theme.colorMidBlue]
        gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
        gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
        gradientLayer.frame …
Run Code Online (Sandbox Code Playgroud)

uibutton cagradientlayer swift swift4

2
推荐指数
1
解决办法
1025
查看次数

径向 CAGradientLayer 在运行时无法正确渲染

我正在尝试快速创建径向 CAGradientLayer。正常的 CAGradientLayers(默认类型axial)没有问题。它们在快照和模拟器的运行时渲染得很好。

当我拍摄我创建的 UIView 的快照(仅用于 CAGradientLayer)时,它显示了一个漂亮的径向 CAGradientLayer。然而,当我使用这个视图并在模拟器中运行时查看它时,它看起来很糟糕。我不知道我做错了什么。

这是 CAGradientLayer 的代码:

import Foundation

class ChannelGradientView: UIView {

  // MARK: - Init

  override init(frame: CGRect) {
    super.init(frame: frame)
    setup()
  }

  required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setup()
  }

  // MARK: - Setup

  private func setup() {
    backgroundColor = .clear
    setupGradient()
  }

  private func setupGradient() {
    let gradient = layer as? CAGradientLayer
    gradient?.type = .radial

    gradient?.colors = [
      UIColor.black.withAlphaComponent(0.8),
      UIColor.black.withAlphaComponent(0)
    ].map { $0.cgColor }

    let blackPoint = CGPoint(x: 1, …
Run Code Online (Sandbox Code Playgroud)

radial-gradients ios cagradientlayer swift

2
推荐指数
1
解决办法
559
查看次数