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;
}
相关推荐
阿童木写作5 小时前
跨境电商图片翻译工具推荐:批量图片翻译+视频字幕翻译+智能抠图
python·macos·音视频·xcode
2501_9151063211 小时前
安卓抓包软件2026,免证书抓包 应用层抓包 代理抓包全解析
网络协议·计算机网络·网络安全·ios·adb·https·udp
kango12 小时前
Xcode、模拟器Runtime、真机符号完整知识手册
ios·app
攀小黑14 小时前
vue3+Web Speech API 封装了一个弹窗语音输入
前端·macos·xcode
用户380341658829715 小时前
50MB 红线下的 iOS 录屏引擎:ReplayKit Broadcast Extension 实战
ios
Privasa-隐私实验室21 小时前
跨端技术选型|Flutter搭建隐私加密App,安卓与iOS双端差异适配实战
android·笔记·安全·flutter·ios·隐私安全·aes-256
sakiko_1 天前
OC基础语法(与Swift对比)-1
开发语言·ios·objective-c·swift
未来猫咪花1 天前
Everything is ViewModel:让状态管理回到对象世界
android·flutter·ios
Crazy_MT2 天前
不越狱,iPhone 为什么也能安装任意 IPA?聊聊 iLoader、SideStore 和 LiveContainer 的原理
ios·开源
JoyCong19982 天前
从iPhone Ultra到ToDesk:折叠大屏时代的效率革命,硬件只是开始
大数据·运维·ios·智能手机·iphone·远程工作·远程操作