Swift Control View,Label渐变颜色(源码)

发布时间:2026/8/19 11:28:00

Swift Control View,Label渐变颜色(源码)
一直觉得自己写的不是技术而是情怀一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的希望我的这条路能让你们少走弯路希望我能帮你们抹去知识的蒙尘希望我能帮你们理清知识的脉络希望未来技术之巅上有你们也有我。Swift Control View,Label渐变颜色(源码) 下载链接要用frame约束方式文章目录使用参数说明坐标系说明View - 示例代码效果Label - 示例代码效果封装代码GradientLabelGradientViewUIViewAZGradient使用参数说明参数说明colors 颜色数组locations控制颜色过渡的位置startPoint: 渐变起点endPoint: 渐变终点注意颜色数组有3个颜色控制颜色过渡的位置数组对应要有3个参数渐变起点就是颜色于颜色过渡的位置坐标系说明(0,0)───────────(1,0)│ │ │ UIView │ │ │(0,1)───────────(1,1)View - 示例代码letboxUIView(frame: CGRect(x:0, y:0, width:200, height:100))box.az_setGradientBackground(colors:[UIColor.red, UIColor.blue], locations:[0.0,1.0], startPoint: CGPoint(x:0, y:0.5), endPoint: CGPoint(x:1, y:0.5))view.addSubview(box)box.centerview.center效果Label - 示例代码letlabelGradientLabel()label.frameCGRect(x:50, y:100, width:300, height:60)label.text渐变文字效果label.fontUIFont.boldSystemFont(ofSize:30)label.textAlignment.center // 设置渐变通过关联属性 label.az_colors[UIColor.systemPink.cgColor, UIColor.systemPurple.cgColor]label.az_locations[0.0,1.0]label.az_startPointCGPoint(x:0, y:0.5)label.az_endPointCGPoint(x:1, y:0.5)view.addSubview(label)label.centerview.center效果封装代码GradientLabelimportUIKit class GradientLabel: UILabel{override class var layerClass: AnyClass{returnCAGradientLayer.self}}GradientViewimportUIKit class GradientView: UIView{override class var layerClass: AnyClass{returnCAGradientLayer.self}}UIViewAZGradientimportUIKitimportObjectiveC.runtime private var azColorsKey: UInt80private var azLocationsKey: UInt80private var azStartPointKey: UInt80private var azEndPointKey: UInt80extension UIView{// MARK: - Associated Properties var az_colors:[CGColor]?{get{returnobjc_getAssociatedObject(self,azColorsKey)as?[CGColor]}set{objc_setAssociatedObject(self,azColorsKey, newValue, .OBJC_ASSOCIATION_COPY_NONATOMIC)ifletlayerself.layer as? CAGradientLayer{layer.colorsnewValue}}}var az_locations:[NSNumber]?{get{returnobjc_getAssociatedObject(self,azLocationsKey)as?[NSNumber]}set{objc_setAssociatedObject(self,azLocationsKey, newValue, .OBJC_ASSOCIATION_COPY_NONATOMIC)ifletlayerself.layer as? CAGradientLayer{layer.locationsnewValue}}}var az_startPoint: CGPoint{get{return(objc_getAssociatedObject(self,azStartPointKey)as? NSValue)?.cgPointValue ?? .zero}set{objc_setAssociatedObject(self,azStartPointKey, NSValue(cgPoint: newValue), .OBJC_ASSOCIATION_RETAIN_NONATOMIC)ifletlayerself.layer as? CAGradientLayer{layer.startPointnewValue}}}var az_endPoint: CGPoint{get{return(objc_getAssociatedObject(self,azEndPointKey)as? NSValue)?.cgPointValue ?? .zero}set{objc_setAssociatedObject(self,azEndPointKey, NSValue(cgPoint: newValue), .OBJC_ASSOCIATION_RETAIN_NONATOMIC)ifletlayerself.layer as? CAGradientLayer{layer.endPointnewValue}}}// MARK: - 创建渐变View static func az_gradientView(colors:[UIColor]?, locations:[NSNumber]?, startPoint: CGPoint, endPoint: CGPoint)-UIView{letviewGradientView()view.az_setGradientBackground(colors: colors, locations: locations, startPoint: startPoint, endPoint: endPoint)returnview}// MARK: - 设置渐变 func az_setGradientBackground(colors:[UIColor]?, locations:[NSNumber]?, startPoint: CGPoint, endPoint: CGPoint){guardletcolorscolorselse{return}letgradientCAGradientLayer()gradient.colorscolors.map{$0.cgColor}gradient.locationslocations gradient.startPointstartPoint gradient.endPointendPoint gradient.frameself.bounds gradient.cornerRadiusself.layer.cornerRadius self.layer.insertSublayer(gradient, at:0)}}

相关新闻

思源宋体免费商用字体:从旧书排版到网页正文的完整路径

思源宋体免费商用字体:从旧书排版到网页正文的完整路径

2026/8/19 11:28:00

思源宋体免费商用字体:从旧书排版到网页正文的完整路径 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 接手一本旧体诗词集的排版时,我在字体选择上犹豫了很久。…

品牌叙事重构与创始人IP定位:从李斌表态看企业战略沟通

品牌叙事重构与创始人IP定位:从李斌表态看企业战略沟通

2026/8/19 11:18:00

1. 项目概述:一次关于品牌叙事与创始人定位的深度拆解最近看到“蔚来李斌:不愿与贾跃亭做对比 不喜欢生态这个词”这个标题在圈内引发了挺多讨论。乍一看,这像是一则简单的企业家表态新闻,但作为一名长期观察汽车与科技行业品牌传…

多智能体系统故障定位:基于事件溯源与因果图的根因分析实践

多智能体系统故障定位:基于事件溯源与因果图的根因分析实践

2026/8/19 11:18:00

1. 项目概述:当多智能体系统“崩了”,我们如何精准定位“元凶”?在基于大语言模型(LLM)的多智能体系统里,最让人头疼的场景莫过于:一个复杂的协作任务执行失败了,控制台只抛出一个笼…

锤子助手第121个开关:启用自动下载视频的位置、安全验证与存储流量边界

锤子助手第121个开关:启用自动下载视频的位置、安全验证与存储流量边界

2026/8/19 13:28:05

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

锤子助手第120个开关:显示跳转小程序的位置、配置方法与路径授权边界

锤子助手第120个开关:显示跳转小程序的位置、配置方法与路径授权边界

2026/8/19 13:28:05

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

锤子助手第113个开关:启用分享复读的位置、安全验证与外部来源边界

锤子助手第113个开关:启用分享复读的位置、安全验证与外部来源边界

2026/8/19 13:28:05

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

锤子助手第112个开关:启用笔记复读的位置、验证方法与混合内容隐私边界

锤子助手第112个开关:启用笔记复读的位置、验证方法与混合内容隐私边界

2026/8/19 13:28:05

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

如何彻底掌控惠普OMEN游戏本性能?开源工具OmenSuperHub风扇功耗控制完整指南

如何彻底掌控惠普OMEN游戏本性能?开源工具OmenSuperHub风扇功耗控制完整指南

2026/8/19 13:28:05

如何彻底掌控惠普OMEN游戏本性能?开源工具OmenSuperHub风扇功耗控制完整指南 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenS…

Linux 终端命令速查表 -- 20 渗透测试工具速查表

Linux 终端命令速查表 -- 20 渗透测试工具速查表

2026/8/19 13:18:05

信息收集 绘制目标地图:发现主机、开放端口、子域名和服务。 命令 说明 nmap 网络扫描与端口探测 zenmap Nmap 的图形界面 masscan 高速互联网端口扫描器 netdiscover 被动/主动 ARP 侦察工具 amass 深度子域名枚举 subfinder 子域名发现工具 dmitry 深度信息收集工具 ike-sc…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/19 9:17:18

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

SQL 调优 [ 2 ]

SQL 调优 [ 2 ]

2026/8/19 0:07:32

type列详解EXPLAIN输出的type列描述了表是如何连接的,性能从最好到最差的排序如下:systemconsteq_refreffulltextref_or_nullindex_mergeunique_subqueryindex_subqueryrangeindexALL接下来我们对 type列 做详细讲解。我们都知道,想要评估一条…

正式评优怎么选投票工具?人人微投票审计级防刷能力实测

正式评优怎么选投票工具?人人微投票审计级防刷能力实测

2026/8/19 0:07:32

在线上投票工具遍地开花的今天,选择一个合适的平台,本质上是在做一道关于场景与需求的匹配题。人人微投票是一个很典型的案例——它的产品逻辑、技术架构和商业模式,都围绕着“正式评选”这个细分场景深度扎根,也因此形成了自己鲜…

15 天 3 连发:DeepSeek 的「机枪」节奏,到底在下什么棋?

15 天 3 连发:DeepSeek 的「机枪」节奏,到底在下什么棋?

2026/8/19 0:07:32

15 天 3 连发:DeepSeek 的「机枪」节奏,到底在下什么棋?回看 2026 年 8 月这半个月,DeepSeek 的动作密度堪称疯狂:月初端出便宜快速的 V4-Flash,8 月 13 日同一天甩出 V4-Pro 正式版 开源 Harness 框架&am…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…