ios - 在 swift 中在矩形上绘制渐变

标签 ios swift draw gradient

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

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

我该怎么做?

enter image description here

我的梯度实验代码:-)

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)

最佳答案

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

CGContextAddRect(context, CGRect(...))
CGContextClip(context)

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

渐变将被裁剪到矩形。

关于ios - 在 swift 中在矩形上绘制渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29046563/

相关文章:

ios - UIGraphicsGetCurrentContext 没有出现在 UIView 中

ios - AdNetworkSupport 适配器 - AdColony 3 支持

ios - 从 json 循环数组

html - 尝试用 CSS 绘制虚线

WPF - 从中​​心屏幕到边缘绘制曲线,随着屏幕的变化动态适应

iOS - 导航栏没有后退按钮

iphone - 如何在 iOS 中更改 URL 中的内容?

javascript - 短父元素中 float 图像上不需要的底部边距

ios - 通用链接转到 Safari 而不是调用它的应用程序

swift - 你好!我想为我的类创建构造函数,但出现错误 : Super. 在从初始化程序 swift 返回之前,未在所有路径上调用 init