添加颜色渐变的UIView

UIView颜色渐变,可以直接使用CAGradientLayer或者重写drawRect:都可以实现渐变的效果,其中本质都是一样的.

比较简单的渐变只要设置过渡的颜色,和开始的位置,若不设置位置,会默认平均分.

1.使用 CAGradientLayer

//gradientLayer

 1  //gradientLayer
 2     func addGradientViewLayer(){
 3         let contentView = UIView(frame: CGRectMake(100, 100, 100, 100))
 4         contentView.backgroundColor = UIColor.greenColor()
 5         self.view.addSubview(contentView)
 6
 7         //create gradientLayer
 8         let gradientLayer : CAGradientLayer = CAGradientLayer()
 9         gradientLayer.frame = CGRectMake(0, 20, 100, 40);
10         //gradient colors
11         let colors = [UIColor.redColor().CGColor,UIColor.blackColor().CGColor]
12
13         let locations = [0.0,1.0]
14         gradientLayer.colors = colors
15         gradientLayer.locations = locations
16         contentView.layer.insertSublayer(gradientLayer, atIndex: 0)
17
18     }

效果图,绿色背景View上的红黑渐变

2.drawRect:自定义

 1 override func drawRect(rect: CGRect) {
 2         let colorSpace = CGColorSpaceCreateDeviceRGB()
 3         let context = UIGraphicsGetCurrentContext()
 4         let gradientStartColor = UIColor.greenColor()
 5
 6         let gradientEndColor = UIColor.redColor()
 7         //colors
 8         let gradientColors : CFArray = [gradientStartColor.CGColor,gradientEndColor.CGColor]
 9
10         //locations
11         let gradientLocations : [CGFloat] = [0.0,1.0]
12         let gradient = CGGradientCreateWithColors(colorSpace, gradientColors, gradientLocations)
13
14         let pathRect = CGRectInset(self.bounds, 20, 20)
15
16         let topPoint = CGPointMake(self.bounds.size.height/2, 20)
17         let bottomPoint = CGPointMake(self.bounds.size.width/2, self.bounds.size.height - 20)
18
19         let roundedRectanglePath = UIBezierPath(roundedRect: pathRect, cornerRadius: 4)
20         CGContextSaveGState(context)
21         roundedRectanglePath.addClip()
22         CGContextDrawLinearGradient(context, gradient, bottomPoint, topPoint, 0)
23         CGContextRestoreGState(context)
24
25     }

效果,红绿渐变

时间: 2024-10-17 12:35:48

添加颜色渐变的UIView的相关文章

添加颜色渐变

[self.layer addSublayer:[self shadowAsInverse]]; - (CAGradientLayer *)shadowAsInverse { CAGradientLayer *newShadow = [[[CAGradientLayer alloc] init] autorelease]; CGRect newShadowFrame =self.frame; newShadow.frame = newShadowFrame; //添加渐变的颜色组合 newSha

iOS 动画绘制线条颜色渐变的折线图

效果图 .................... 概述 现状 折线图的应用比较广泛,为了增强用户体验,很多应用中都嵌入了折线图.折线图可以更加直观的表示数据的变化.网络上有很多绘制折线图的demo,有的也使用了动画,但是线条颜色渐变的折线图的demo少之又少,甚至可以说没有.该Blog阐述了动画绘制线条颜色渐变的折线图的实现方案,以及折线图线条颜色渐变的实现原理,并附以完整的示例. 成果 本人已将折线图封装到了一个UIView子类中,并提供了相应的接口.该自定义折线图视图,基本上可以适用于大部分

CAGradientLayer颜色渐变器

使用CAGradientLayer可以实现颜色的渐变, 我们先看下头文件 @interface CAGradientLayer : CALayer @property(nullable, copy) NSArray *colors;//颜色渐变的数组 @property(nullable, copy) NSArray<NSNumber *> *locations;//渐变颜色的区间分布,locations的数组长度和color一致,默认是nil,会平均分布 @property CGPoint

ios 导航栏透明, 上下滑动 导航栏 颜色渐变

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #008400 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3d1d81 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 } p.p4 {

实现颜色渐变的顶部分页栏

先看一下效果图 先说一下原理,"一"."二"."三"是三个按钮,在三个按钮下面有两个TextView,一个是青色的,一个是灰色的,通过不断调整青色TextView的宽度,来达到颜色渐变的效果.按钮下面是一个ViewPager+Fragment来是滑动翻页. 这里布局文件非常重要,我先把布局文件贴出来,activity_main.xml <RelativeLayout xmlns:android="http://schemas.an

使用CSS3创建文字颜色渐变(CSS3 Text Gradient)

考虑一下,如何在网页中达到类似以下文字渐变的效果? 传统的实现中,是用一副透明渐变的图片覆盖在文字上.具体实现方式可参考 http://www.qianduan.net/css-gradient-text-effect.html .这种方式优点是图片可控,所以可实现很复杂的渐变效果,但是缺点是图片渐变色必须与背景色一致,同时损失了鼠标点击.文字选择等事件. 改进的方法可以使用 CSS3 的背景渐变 -webkit-gradient ,用一个背景渐变的 DIV 代替图片.下面是实现效果示例,相比以

css之为文本添加线性渐变和外描边

css之为文本添加线性渐变和外描边  一.效果: 描边:描边+渐变: 二.描边: api:text-stroke 问题:text-stroke的描边是居中描边,无法直接设置外描边 解决:在before中添加文本,设置字体描边,绝对定位在文本下方 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title<

操作DOM元素,Dom元素添加颜色,删除第二个li元素

<html> <head> <title>demo</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> /* 示例操作DOM元素 */ window.onload = function(){ //给Dom元素添

code实现透明度渐变和颜色渐变的view

最近用code写了些view上的渐变效果,使得app的UI特效不必全部依赖美工出的图片. 效果如下: 主要用到了Layer上的渐变层,核心代码如下,关于CALaer的使用可参考 //Transparent Gradient Layer - (void) insertTransparentGradient { UIColor *colorOne = [UIColor colorWithRed:(33/255.0) green:(33/255.0) blue:(33/255.0) alpha:0.0