相关疑难解决方法(0)

以编程方式创建具有颜色渐变的UIView

我正在尝试在运行时生成具有渐变颜色背景(纯色到透明)的视图.有没有办法做到这一点?

uiview uicolor ios

282
推荐指数
13
解决办法
21万
查看次数

如何使用Core Graphics/iPhone绘制渐变线(淡入/淡出)?

我知道如何绘制一条简单的线条:

CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);
CGContextMoveToPoint(context, x, y);
CGContextAddLineToPoint(context, x2, y2);
CGContextStrokePath(context);
Run Code Online (Sandbox Code Playgroud)

我知道如何做一个渐变矩形,ig:

CGColorSpaceRef myColorspace=CGColorSpaceCreateDeviceRGB();
size_t num_locations = 2;
CGFloat locations[2] = { 1.0, 0.0 };
CGFloat components[8] = { 0.0, 0.0, 0.0, 1.0,    1.0, 1.0, 1.0, 1.0 };

CGGradientRef myGradient = CGGradientCreateWithColorComponents(myColorspace, components, locations, num_locations);

CGPoint myStartPoint, myEndPoint;
myStartPoint.x = 0.0;
myStartPoint.y = 0.0;
myEndPoint.x = 0.0;
myEndPoint.y = 10.0;
CGContextDrawLinearGradient (context, myGradient, myStartPoint, myEndPoint, 0);
Run Code Online (Sandbox Code Playgroud)

但是我怎么能画一条渐变的线条,ig从黑色渐变到白色(也可能在另一边渐渐变成黑色)?

iphone gradient core-graphics draw

24
推荐指数
4
解决办法
4万
查看次数

带颜色渐变的UIBezierPath

我有一个关于UIBezierPath的问题.

例如,我有这条路:

现在我想要一个从白色到红色的颜色渐变.从左到右.

这是我的代码:

UIBezierPath *bezierPath;
bezierPath = [UIBezierPath bezierPathWithArcCenter:_center radius:_radius startAngle:((4 * angle)) endAngle:(((20) * angle)) clockwise:YES];
[bezierPath addLineToPoint:_center];
[bezierPath closePath];
UIColor *color = [UIColor colorWithHue:0/sectors saturation:1. brightness:1. alpha:1];
[color setFill];
[color setStroke];
[bezierPath fill];
[bezierPath stroke];
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

编辑1:

我有这个色轮:

在此输入图像描述

    UIBezierPath *bezierPath;

for ( int i = 0; i < 360; i++) {
    bezierPath = [UIBezierPath bezierPathWithArcCenter:_center radius:_radius startAngle:((i * angle)) endAngle:(((i + 1) * angle)) clockwise:YES];

    [bezierPath addLineToPoint:_center];
    [bezierPath closePath];
    UIColor *color = [UIColor colorWithHue:i/sectors saturation:1. brightness:1. alpha:1]; …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uibezierpath

10
推荐指数
1
解决办法
5043
查看次数

Swift:沿着bezier路径的渐变(使用CALayers)

我有一个相对直接的实现使用CALayer对象设置的进度视图.进度视图本身是UIView的子视图.

以下是设置进度环的代码:

        self.progressRingLayer = CAShapeLayer()

        let innerRect = CGRectInset(bounds, CGFloat(self.lineWidth) / 2, CGFloat(self.lineWidth) / 2)
        let innerPath = UIBezierPath(ovalInRect: innerRect)

        self.progressRingLayer.path = innerPath.CGPath
        self.progressRingLayer.fillColor = UIColor.clearColor().CGColor
        self.progressRingLayer.strokeColor = kProgressColor.CGColor
        self.progressRingLayer.anchorPoint = CGPointMake(0.5, 0.5)
        self.progressRingLayer.transform = CATransform3DRotate(self.progressRingLayer.transform, (CGFloat(M_PI))*1, 0, 0, 1)
        self.progressRingLayer.lineCap = kCALineCapRound
        self.progressRingLayer.lineWidth = CGFloat(self.lineWidth)

        self.layer.addSublayer(self.progressRingLayer)
Run Code Online (Sandbox Code Playgroud)

我现在要做的是向跟随(或弯曲)路径的progressRingLayer添加渐变.我成功地为填充添加了线性渐变,但不仅仅是路径.

这是我想要的效果的一个例子:

在此输入图像描述

到目前为止,我发现的所有内容都需要一些额外的步骤,其中CoreGraphics和CGContext不太适合我的实现.任何帮助都会很棒,谢谢!

gradient calayer ios swift

8
推荐指数
1
解决办法
5172
查看次数

沿 SwiftUI 路径的颜色渐变填充

我想创建带有渐变的自定义路径,类似于图像: 在此处输入图片说明

我如何使用 SwiftUI 做到这一点?

更新。我知道苹果文档中描述的线性、角度、径向渐变。现在我使用线性渐变的组合: 在此处输入图片说明

但我不知道如何创建这样的自定义形状: 在此处输入图片说明

swiftui

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

如何使用CAGradientLayer绘制渐变色轮?

我从这些链接中得到了一些参考 -

我已经经历了"HSV色彩空间"的概念.但我想借助于使用RGB绘制色轮CAGradientLayer.

这是使用简单的RGB颜色数组制作色轮的代码片段UIBezierPath-

func drawColorWheel()
{
    context?.saveGState()

    range = CGFloat(100.00 / CGFloat(colorArray.count))

    for k in 0 ..< colorArray.count
    {

        drawSlice(startPercent: CGFloat(k) * range, endPercent: CGFloat(CGFloat(k + 1) * range), color: colorArray.object(at: k) as! UIColor)
    }

    context?.restoreGState()
}

func drawSlice(startPercent: CGFloat, endPercent: CGFloat, color: UIColor)
{        
    let startAngle = getAngleAt(percentage: startPercent)
    let endAngle = getAngleAt(percentage: endPercent)

    let path =  getArcPath(startAngle: startAngle, endAngle: endAngle)
    color.setFill()
    path.fill()
}
Run Code Online (Sandbox Code Playgroud)

getAngleAt()getArcPath()是私人活动的角度来绘制路径.

这是我的代码的最终输出 …

core-graphics ios uibezierpath cagradientlayer swift3

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

iOS - 从底部填充 UIBezierPath 的动画

我有一个UIBezierPath内部自定义UIView, draw(). 我想填充那条路径,让我们说一个从底部到顶部的矩形。我该如何实现这一点。

这里我看到了使用CAShapeLayer它的可能。这对动画效果很好,但在矩形上从下到上没有填充。请指导。

animation core-graphics uiview ios swift3

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