【iOS】设置背景渐变色

这篇具有很好参考价值的文章主要介绍了【iOS】设置背景渐变色。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

drawRect函数

主要负责iOS的绘图操作,程序会自动调用此方法进行绘图。我在这个函数中绘制渐变背景色。

方法定义:

  • -(void)drawRect:(CGRect)rect;
    重写此方法,执行重绘任务
  • -(void)setNeedsDisplay;
    标记为需要重绘,异步调用drawRect
  • -(void)setNeedsDisplayInRect:(CGRect)rect;
    标记为需要局部重绘

调用机制:

  1. 系统自动调用,在Controller->viewDidLoad之后。但是如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。
  2. 直接调用setNeedsDisplay,或者setNeedsDisplayInRect:触发drawRect:,但是有个前提条件是rect不能为0.。

绘制方法

利用CALayer或CGGradientRef绘制。

CALayer

利用CALayer的子类CAGradientLayer绘制渐变背景色。

// 初始化
CAGradientLayer* layer = [[CAGradientLayer alloc] init];
    
// 颜色数组,设置需要过渡的颜色(CGColor对象)。
layer.colors = @[(__bridge id)[UIColor colorWithRed:0.439f green:0.522f blue:0.714f alpha:1].CGColor, (__bridge  id)[UIColor colorWithRed:0.529f green:0.655f blue:0.851f alpha:1].CGColor, (__bridge  id)[UIColor whiteColor].CGColor];
    
// 开始位置与结束位置。(0, 0)左上角,(1, 1)右下角
layer.startPoint = CGPointMake(0.5, 0);
layer.endPoint = CGPointMake(0.5, 1);

// layer大小
layer.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height / 3);
    
[self.layer addSublayer:layer];

展示:
【iOS】设置背景渐变色

CGGradientRef

// 图形上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 颜色空间
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    
    // 创建颜色数组
    // 由于指定RGB颜色空间,四个数组元素代表一个颜色(r, g, b, alpha)
    CGFloat compoents[12] = {
        0.2, 0.2, 0.2, 1,
        0.4, 0.4, 0.4, 1,
        0.8, 0.8, 0.8, 1
    };
    
    // 渐变位置(0~1),数组元素个数不小于颜色数
    CGFloat locations[3] = {0, 0.4, 0.8};
    
    // 创建梯度上下文
    CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, compoents, locations, 3);
    
    // 绘制线性渐变
    /*
     startPoint与endPoint:起始于结束位置,需要位置坐标
     options:绘制方式
     kCGGradientDrawsBeforeStartLocation 开始位置之前就进行绘制,到结束位置之后不再绘制,
     kCGGradientDrawsAfterEndLocation 开始位置之前不进行绘制,到结束点之后继续填充
     */
    CGContextDrawLinearGradient(ctx, gradient, CGPointMake(self.frame.size.width/2, 0), CGPointMake(self.frame.size.width/2, self.frame.size.height/3), kCGGradientDrawsAfterEndLocation);
    
    // 释放颜色空间
    CGColorSpaceRelease(colorSpace);

展示:
【iOS】设置背景渐变色文章来源地址https://www.toymoban.com/news/detail-416145.html

到了这里,关于【iOS】设置背景渐变色的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 鼠标指针经过时背景变色

    目录 一、如何使用鼠标指针经过时背景变色? 二、使用步骤 1.CSS(表格的样式) 2.表格(5行7列的一个表格) 2.Script部分(实现鼠标指针经过时背景变色效果) 总结 提示:以下是本篇文章正文内容,下面案例可供参考 在之前学习css的时候也学过hover的使用也可以进行该操作

    2024年02月12日
    浏览(43)
  • 安卓学习笔记—渐变色背景

    步骤一:在drawable目录新建一个资源文件 : gradual_color_bg.xml 步骤二:编辑此样式文件: 里面各个标签的作用都解释的很清楚。 步骤三:使用:         在任何可以设置背景的控件属性里添加:android:background=\\\"@drawable/gradual_color_bg\\\" 即可。效果图

    2024年02月11日
    浏览(36)
  • Echarts 折线图背景渐变色

    在资料上找到类似的,如下: 在许继项目红外传感器模块中使用自己编写的: 无渐变的: EchartsModule模块(使用): 效果图:

    2024年02月13日
    浏览(39)
  • 2023全国安全生产合格证危险化学品经营单位主要负责人模拟考试试卷一[安考星]

    该模拟试题来源于安考星公众号 1、信息上报就是明确事故发生后向上级主管单位报告事故信息的流程、内容和时限。 正确答案:错误 参考解析:《生产经营单位安全生产事故应急预案编制导则》规定:信息上报是明确事故发生后向上级主管部门、上级单位报告事故信息的流

    2024年02月10日
    浏览(62)
  • 在uniapp中使用背景渐变色与背景图不生效问题

    list上有文字详情以及背景图,从背景可以看出是渐变色和 背景图片的结合。 因为使用到渐变色,所以要结合 background-blend-mode 属性来实现与背景图片叠加显示,否则只通过 background: linear-gradient(); background-image: url(); 设置不会生效,这样只能显示图片。 如果背景色不是渐变色

    2024年02月04日
    浏览(40)
  • CSS同时使用背景图和渐变色

    一个盒子,在拥有渐变色的前提下还需要同时拥有背景图层 类似如下的效果 首先我们按照常规的写css的方式来写 这种图片加背景的写法没什么问题。可以正常显示背景和图片 但是我们把背景换成渐变色以后就出问题了 不显示渐变色,只显示一个图片 把背景图和渐变色写在

    2024年01月23日
    浏览(37)
  • 通过使用html的css样式来达到给背景色添加渐变色的效果

    这里我直接添加了两个div,并且给两个div添加了基本的css样式,有问题请私信          在演示开始之前我们先来认识一下实现渐变效果的一个属性  background: linear-gradient 这个是我们设置背景渐变色的关键属性,然后我们开始演示(这里我们通过修改第二个div)          

    2024年02月08日
    浏览(53)
  • MFC重载CButton类,实现改变按钮背景色、字体样式更改、鼠标滑动按钮变色功能

    在对话框内添加button控件,button控件属性中 所有者 描述改为TRUE 添加COwerButton类。代码如下: COwerButton.h COwerButton.cpp 给button按钮添加变量,变量类型设为COwerButton,也可在主界面XXXDlg.h中修改button类型 COwerButton m_button1; 运行完成,效果如下: 当鼠标移动到按钮上以及点击按钮

    2024年02月12日
    浏览(61)
  • 【c++】设置控制台窗口字体颜色和背景色(system和SetConsoleTextAttribute函数 )

    编译后弹出的黑框框(exe 可执行文件)总是黑底白字,在做实践大作业时想到尝试改变字体的颜色与背景色,搜索发现有 system 和 SetConsoleTextAttribute 两个函数,各有长处,详细了解一下,为了以后的使用。 操作平台:Microsoft Visual Studio 2019  [content] system函数 (Windows系统)

    2024年02月06日
    浏览(51)
  • css 背景是个图片并且含有透明度的渐变色.超级简单。background相关属性就行了

    底纹是个背景图片。 然后上面有个渐变色。渐变色含有透明度这样才能把底纹显示出来 不用麻烦的把图片放进去各种定位修改层级来写啦。 直接一个background相关属性就行了。 背景色怎么增加透明度呢 使用rgba的方式rgba(127,47,255, 0.7 )。 //0.7是透明度

    2024年01月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包