【问题标题】:drawing gradient over rectangle in swift快速在矩形上绘制渐变
【发布时间】:2015-03-14 07:28:07
【问题描述】:

我尝试在矩形中绘制渐变。 下图显示,该渐变通常有效(蓝色),但它会填满整个屏幕。

我喜欢只在特定区域(如绿色矩形)进行渐变。

我该怎么做?

我的梯度实验代码:-)

let context = UIGraphicsGetCurrentContext()

//let locations: [CGFloat] = [ 0.0, 0.25, 0.5, 0.75 ]
let locations: [CGFloat] = [ 0.0, 0.99 ]

let colors = [UIColor.blueColor().CGColor,
               UIColor.whiteColor().CGColor]

let colorspace = CGColorSpaceCreateDeviceRGB()

let gradient = CGGradientCreateWithColors(colorspace,
    colors, locations)

var startPoint = CGPoint()
var endPoint =  CGPoint()

startPoint.x = 0.0
startPoint.y = 10.0
endPoint.x = self.frame.width-100;
endPoint.y = 10

//let rectangle_main = CGRectMake(CGFloat(15), CGFloat(0), CGFloat(1000), CGFloat(30));

//CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0)
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0)

【问题讨论】:

    标签: ios swift draw gradient


    【解决方案1】:

    您需要在绘制渐变之前指定剪切路径。 在您的情况下,创建一个矩形路径并调用CGContextClip(context)

    CGContextAddRect(context, CGRect(...))
    CGContextClip(context)
    
    CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0)
    

    渐变将被剪裁到矩形。

    【讨论】:

    • 非常感谢。正是我搜索的内容!
    猜你喜欢
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多