在iOS上绘制渐变

  在iOS上绘制渐变,我们创建一个对象,但这一过程是通过调用Core Graphics C函数来完成的。

  这里不是将路径对象提供给渐变,并让渐变来绘制自己,而是对当前图形上下文进行修剪(clip),然后从屏幕上的一点向另一个点绘制渐变。“修剪”是指将绘制范围局限于一个形状,这样可以防止渐变充满整个视图。

  此外,除了提供一个应当据以绘制渐变的角度之外,还应当传送渐变的起始绘制坐标,此坐标应当转换为视图的坐标控件。

下面是在playground中的实现代码:

//: Playground - noun: a place where people can play

import UIKit

class MyView : UIView{
    override func drawRect(rect: CGRect) {
        let colorSpace = CGColorSpaceCreateDeviceRGB()
        let context = UIGraphicsGetCurrentContext()
        
        let gradientStartColor = UIColor(red: 0.1, green: 0.1, blue: 0.8, alpha: 1)
        let gradientEndColor = UIColor(red: 1, green: 0.6, blue: 0.8, alpha: 1)
        let gradientcolors : CFArray = [gradientStartColor.CGColor,gradientEndColor.CGColor]
        let gradientLocations : [CGFloat] = [0.0,1.0]
        let gradient = CGGradientCreateWithColors(colorSpace, gradientcolors, gradientLocations)
        let pathRect = CGRectInset(self.bounds, 20, 20)
        let topPoint = CGPointMake(self.bounds.size.width/2, 20)
        let bottomPoint = CGPointMake(self.bounds.size.width/2 , self.bounds.size.height-20)
        
        let roundedRectanglePath = UIBezierPath(roundedRect: pathRect,cornerRadius: 4)
        
        CGContextSaveGState(context)
        
        roundedRectanglePath.addClip()
        CGContextDrawLinearGradient(context, gradient, bottomPoint, topPoint, .DrawsAfterEndLocation)
        
        CGContextRestoreGState(context)
    }
}

let viewRect = CGRect(x: 0, y: 0, width: 100, height: 100)
let myEmptyView = MyView(frame:viewRect)
myEmptyView.backgroundColor = UIColor.clearColor()

  下面是效果图

转载于:https://www.cnblogs.com/torrescx/p/5364512.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值