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;
}
相关推荐
*拯4 小时前
Uniapp Android/IOS 获取手机通讯录
android·ios·uni-app
天天打码6 小时前
Lynx-字节跳动跨平台框架多端兼容Android, iOS, Web 原生渲染
android·前端·javascript·ios
lilili啊啊啊8 小时前
iOS safari和android chrome开启网页调试与检查器的方法
android·ios·safari
名字不要太长 像我这样就好1 天前
【iOS】源码阅读(二)——NSObject的alloc源码
开发语言·macos·ios·objective-c
I烟雨云渊T1 天前
iOS实名认证模块的具体实现过程(swift)
ios·cocoa·swift
会游泳的石头1 天前
在Java项目中实现本地语音识别与热点检测,并集成阿里云智能语音服务(优化版)
阿里云·语音识别·xcode
小鹿撞出了脑震荡1 天前
汇编学习——iOS开发对arm64汇编的初步了解
汇编·学习·ios
小鹿撞出了脑震荡1 天前
「OC」源码学习—— 消息发送、动态方法解析和消息转发
学习·ios·objective-c
恋猫de小郭2 天前
Flutter 合并 ‘dot-shorthands‘ 语法糖,Dart 开始支持交叉编译
android·flutter·ios
恋猫de小郭2 天前
React Native 前瞻式重大更新 Skia & WebGPU & ThreeJS,未来可期
android·javascript·flutter·react native·react.js·ios