当前位置: 首页 > article >正文

iOS 使用使用渐变色生成图片

遇到这样一个场景,需要在一个背景图上盖一张渐变色的蒙层,
本来这个蒙层是直接可以使用- (CAGradientLayer *) 生成的,但是
由于我这里还有一个特殊的需求 ,就是背景图片会拉伸放大,这就需要随着列表的滚动改变 CAGradientLayer 对象的frame, 但是经过调试发现,CAGradientLayer的frame改变和图片的大小改变是有差距的,会有一个时间差,导致底部露出图片的原样,这是不符合需求的,所以,就打算使用渐变色,生成一个图片,然后添加一个透明的imageView 放在背景视图的上面,随着背景视图放大,跟着放大蒙层图片视图,这样蒙层和背景图就完美贴合了
下面直接贴出代码

思路:创建一个透明的空视图,然后创建一个渐变 layer,
将渐变layer. 添加大空视图上,然后通过截图的方式生成一个渐变的蒙层

- (CAGradientLayer *)gradientLayerOnBg
{
  if (!_gradientLayerOnBg) {
      _gradientLayerOnBg = [[CAGradientLayer alloc] init];
      _gradientLayerOnBg.frame = CGRectMake(0, 0, AUCommonUIGetScreenWidth(), self.backgroundImgView.height);
      _gradientLayerOnBg.colors = @[(id)[UIColor clearColor].CGColor,(id)[UIColor clearColor].CGColor];
      _gradientLayerOnBg.startPoint = CGPointMake(0, 0);
      _gradientLayerOnBg.endPoint = CGPointMake(0, 1);
      _gradientLayerOnBg.locations = @[@(0),@(01)];
  }
  return _gradientLayerOnBg;
}
- (UIImage *)captureImageView
{
   UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, AUCommonUIGetScreenWidth(), self.headerTemplView.height + AUCommonUIGetStatusBarHeight() + 16)];
   view.backgroundColor = [UIColor clearColor];
   [view.layer addSublayer:self.gradientLayerOnBg];
   UIGraphicsBeginImageContext(view.bounds.size);
   [view.layer renderInContext:UIGraphicsGetCurrentContext()];
   UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   return image;
}

http://www.kler.cn/a/324729.html

相关文章:

  • 【Apache Paimon】-- 1 -- Apache Paimon 是什么?
  • vue2和vue3:diff算法的区别?
  • Python学习笔记(2)正则表达式
  • HBase压测 ycsb
  • MacOS下,如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能
  • 【Docker容器】一、一文了解docker
  • 第九届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)
  • 可视化服务编排:jvs-logic API出参加密实战教程
  • 基于springboot vue 大学生竞赛管理系统设计与实现
  • LoRA - 大模型的低秩适应方法
  • springboot第74集:设计模式
  • 在二维平面中,利用时差定位(TDOA)技术,结合N个锚点,通过三边法进行精确定位,采用MATLAB实现
  • 2015年国赛高教杯数学建模A题太阳影子定位解题全过程文档及程序
  • django开发流程2
  • 如何借助Java批量操作Excel文件?
  • 实验一 网络基础及仿真模拟软件Packet Tracer 入门
  • Web Components 代码示例
  • 理解互联网链路:从本地ISP到Tier 1 ISP运营商
  • [算法】模拟:(leetcode)1419.数青蛙(medium)
  • 5 apache poi实现excel的动态下拉框功能
  • 1.1.5 计算机网络的性能指标(上)
  • 力扣 最小覆盖子串
  • 胤娲科技:AI程序员——重塑编程世界的魔法师
  • Spring Boot影院管理系统:小徐的创新
  • 02_OpenCV图片写入
  • select和epoll的详细区别