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;
}
相关推荐
2501_916007473 小时前
前端开发常用软件与工具全面指南
android·ios·小程序·https·uni-app·iphone·webview
sweet丶7 小时前
iOS AI 编程环境配置:Agent、Skill、Rules、Hook、Command
ios·ai编程
专注VB编程开发20年8 小时前
swift,object-c同名函数重载
macos·objective-c·cocoa
2501_915909068 小时前
iOS应用性能优化:十大策略提升用户体验与开发效率
android·ios·小程序·https·uni-app·iphone·webview
白玉cfc11 小时前
【iOS】底层原理:分类、扩展和关联对象
ios·分类·数据挖掘
欧阳天羲12 小时前
AI智能水枪完整开发攻略
人工智能·macos·xcode
2601_9557674212 小时前
观复盾护景贴:东方哲思与双护科技的深度实测
人工智能·科技·ios·iphone·圆偏振光·磁控溅射
会Tk矩阵群控的小木13 小时前
企业级iMessage群发系统实战:单主机管控多iPhone设备完整实现
运维·ios·开源软件·个人开发
人月神话-Lee14 小时前
【图像处理】vImage/Accelerate——SIMD 让 CPU 也能飞
图像处理·深度学习·ios·cnn·ai编程·swift
万能小林子14 小时前
如何将网页在线转APP?5种打包工具对比速成指南(含在线/手机/电脑方案)
android·ios·uni-app·web app·wap2app·app打包·app封装