iOS精品资源汇总(持续更新)
文章目录
支持删除和添加
定点缩放弹窗
- 引言
- 一、iOS自定义视图相关的热门资源
- 1-1 《用户协议及隐私政策》弹窗界面设计
- 1-2 电子签名功能实现
- 1-3 商品详情页设计与优化
- 1-4 图片上传视图的封装技术【支持删除与添加
- 一、iOS自定义视图相关的热门资源
第二部分 II:语音播报与国际化
- 第III章商品模块
- 通过蓝牙技术实现的商品标价与交易记录显示
- 采用横向滑动设计的可折叠弹出菜单
- 通过蓝牙技术实现的商品标价与交易记录显示
第四部分 iOS安全资源
-
V、 逆向
-
- 5.1 IPC
- 5.2 分析如何调用的ptrace,并hook ptrace
- 5.3 进程间的实时通讯方案
-
VI、通过再次点击iOS中的tabBar按钮可以导致界面刷新
- VII、实现了HTML字符串与富文本之间的转换
- VIII、 iOS开发效率辅助工具
-
- 8.1 封装富文本API
遇到的问题是在下载并运行示例代码后,在Xcode12环境中编译器在默认情况下会报告错误:无法找到编译所需的AXIndicatorView库。请问如何解决这个问题呢?
- see also
引言
本文列出最受欢迎的资源,以便供大家快速查找自己所需的资料
文中的蓝字都是超级链接,点击进入即可
全部资源请访问这个地址:<>
I、iOS自定义视图相关热门资源
1.1 《用户协议及隐私政策》弹框
demo源码支持中英文切换
支持中英文切换的源码演示
原文链接:<>
功能使用:通过点击 demo 标题文字实现中英转换
用户协议及隐私政策 弹框的实现步骤如下:
第一部分:自定义TextView组件,并应用富文本属性设置内容(包括诸如下划线样式、超链接属性以及颜色样式等信息)
第二部分:实现代理方法——响应超链点击事件
1.2 电子签名
核心原理: 旋转特定的屏幕
核心原理: 采用屏幕旋转技术作为基础
1、原理文章:<>
2、功能:通过block回调机制生成并存储电子签名图片,在界面设计上实现横屏主显示窗口并使其他副显示窗口转为竖屏状态;支持重写操作以清除或更新已有协议文档;提供灵活配置选项以自定义提示语信息展示方式,并支持查看商户详细协议内容
3、核心原理:实现特定屏幕区域的旋转效果
4、核心步骤:1) 设置主显示窗口为横屏状态2) 设置副显示窗口为竖屏状态
5、使用方法:采用block回调机制生成并存储电子签名图片
1.3 商品详情页
商品详情页
商品详情页
商品详情页
1、原理文章:<>
2、应用场景:产品详情页面以及具有多图展示需求的页面界面
3、核心原理
3.1)按照图片原始比例进行缩放
3.2)UITableView高度根据内容自适应设置
1.4 上传图片视图的封装【支持删除和添加】
内容
应用场景
效果图
内容

4、技术亮点:基于UICollectionViewCell 和 cellular view组件构建应用界面,在确保性能的同时提供良好的用户体验;借助masonry布局实现高效的视图层级管理;遵循MVVM架构设计进行数据分层与业务逻辑分离。5、我的其他类似SDK pod‘KNPodlib’

1.5 查看风险商户的证明材料,图片支持滑动切换
iOS查看大图浏览器
可从平台获取Demo源代码的具体位置
应用场景:浏览多幅大尺寸图片,并支持通过滑动进行切换
文章:<>
主要功能:进入该查看器后,在屏幕上横向移动即可浏览上一页或下一页内容,并通过点击下方的全屏视图按钮来退出查看器

1.6 iOS 常用动画【 定点缩放弹窗】
- 将商品添加商品到购物车的动画
可通过官网获取该软件演示文稿。
具体功能如下:
支持将多件商品加入购物车。
相关文章链接:
教学视频观看入口:
添加商品到购物车的动画(将商品图片iconImgV 移动到购
- (定点缩放弹窗)的应用场景:
1、会员详情的右侧下拉操作菜单

2、浏览器的右侧下拉菜单

3、访问博客文章的详细信息:
4、下载地址为:
仓库中的演示地址为: 仓库demo地址, GitHub上的仓库位置为:github 仓库地址
5、相关技术参考:采用锚点(anchorPoint)技术实现 相关文章
1.7 iOS抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路
iOS概率抽奖算法 & 转盘算法
iOS应用中的抽奖系统:基于概率的抽选机制 & 轮盘游戏逻辑 & 轮盘界面的设计思路(从下载完整Demo)
文章:访问[()
原理:通过Core Graphics实现自定义转盘的绘制
视频:观看[()

1.8 自定义相机( 银行卡/身份证识别OCR、矩形边缘识别)
请参考以下路径获取资源:[1、 资源下载:()
如果您对技术实现有兴趣,则建议深入解析其运行机制:2、原理文章:<>
矩形边缘识别
iOS Document Scanner:矩形边缘识别(基于核心图像框架的CIDetectorTypeRectangle)
[从下载Demo源码:()
为了提升用户体验,在OCR识别场景中都会采用边缘检测技术。
基于CoreImage框架的CIDetector可用于进行有效的边线检测。
通过CAShapeLayer将检测到的边线绘制并展示出来。
具体原理可参考<>
身份证信息识别
[从下载Demo源码:()
该系统具备以下核心功能:能够迅速准确识别并提取用户的姓名、性别、民族、住址及身份证号码,并生成相应的证件照片
适用场景包括信用卡网络申请、商户 entrance application及实名认证等业务流程
系统运行原理如下:
3.1 首先自定义相机设备,并通过调用第三方SDK libexidcardios来实现身份验证与特征识别
3.2 在系统界面中添加自定义化的扫描模块设计(包含一个透镜孔窗口以及动态滑动的条码扫描路径)
3.3 系统采用人脸定位技术,在检测到用户将头像置于预设的人脸框范围内时(即当前帧内的身份证图片尺寸与实际大小匹配),即可捕获该帧图像以获取完整的证件信息
系统运行原理详情请参考官方技术文档:
- 扫描银行卡:
iOS逆向
从下载Demo源码:
功能实现:
本系统能够完成银行名称及银行卡号的信息提取与银行卡图像截取功能。
应用场景包括商户进件和实名认证等。
系统原理:
本系统基于开发人员自定义摄像头,并调用第三方库SDK libexbankcardios.a 和 libbexbankcard.a 进行识别操作(支持无限次调用且免费)。
具体实现步骤如下:
首先,在系统开发中加入定制化的扫描界面设计(其中包含一个中间镂空窗口配合来回移动的扫描线)。
参考文献:
<>
获取支持:
如需获取完整的开发源码包,请关注公众号【iOS逆向
iOS 自定义相机进行银行卡/身份证信息识别方案
1、从获取 demo 源码完整路径为:
2、工作原理:
通过自定义相机采集银行卡图片后,
使用SDK/API调用OCTR技术实现识别功能3、详细地址:
<>4、适用场景包括但不限于:
实名认证
卡包绑定
卡片网络申请5、方案思路:
5.1 完整付费方案思路:
通过将CVImageBufferRef转换为UIImage后直接调用第三方OCR服务
链接参考:<>5.2 免费方案思路:
直接利用libexbankcardios.a及libbbexbankcard.a第三方库的API解析CVImageBufferRef中的银行卡号信息
1.9 收银app必备模块:iOS折扣计算器
采用NSDecimalNumber 进行表达式的精准计算(计算字符串数学表达式)
1、[原理文章:()
2、背景:过去曾用NSExpression进行表达式的计算,并发现了计算精度的问题(例如1+65与65+1的运算结果的小数点后位数不同)
3、解决方案:应用的是NSDecimalNumber类来进行运算
4、[下载地址:()
1.10 通讯录
索引
索引
<>
通过借助CFStringTransform变换技术, 我们能够方便地达成一个通用的搜索索引功能
该系统具备多语言信息检索能力
[文章:()
1.11 限定文本输入框输入特定的字符个数

通过 平台获取 demo 版本:
- 文章链接:
- 主要功能:在文本输入框中限制输入特定字符的数量
- 文本长度计算规则:中文字符每个计为1个单位长度;可转换至ASCII编码的英文字符每个计为0.5个单位长度
- 特色功能:在iOS平台上优化了针对联想字符串输入问题的设计;其中对于汉字规定每个占用2个字符单位;英文字母则占用1个字符单位;解决了中英文切换输入法导致的联想字符串输入bug问题
- Demo需求:在风险商户处理界面提供
情况说明字段,并对该字段进行100个字符以内的内容限制 - 项目地址:https://github.com/zhangkn/RestrictedInputDemo
- 实现架构:采用MVVM架构进行开发

1.12 iOS商品类目选择视图
iOS 商品/经营类目选择视图
[下载链接]:
文章地址:<>
视频地址:<>
商品经营类目选择视图的应用场景:
- 在发布商品时选择相应的类目信息
- 在商户进件中选择经营类目信息
- 在购物类应用下单界面的商品分类筛选
在发布商品的时候,选择类目界面的要求视图分为上下部分。
- 上半区域:呈现已选定的商品类别,并以自上而下的层次排列(悬浮状态),当点击某一类别时,在下半区域切换至同一层级的商品类别供进一步选择。
- 下半区域:提供可选商品列表(支持多选滚动显示)。

支持清空数据功能

1.13 iOS 自定义tab滑块
应用场景:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据
段功能与标签的混合显示;(双滑动条)
应用场景
————————————————
版权声明:此篇文章由的「#公众号:iOS逆向」用户创作。
此篇文章遵循采用署名-非商业用途-相同方式共享(CC 4.0 BY-SA)的许可协议,请在转载授权时附上原文出处链接及本声明。
原文链接:<>
iOS 自定义tab滑块

可以从平台获取《演示文稿》的下载链接位置:
<>
视频地址:<>
通过tab滑块操作实现对不同级别代理商数据的切换与筛选
在商户交易汇总表中使用tab滑块实现对各级别代理商数据的切换与筛选
II 语音播报 & 国际化
2.1 iOS12.1以上在后台或者被杀死无法语音播报的解决方案
app处于后台/被杀死的状态仍可进行语言播报
该iOS版本中的NotificationServiceExtension支持语音播报功能
————————————————
版权声明:本文为博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
1、原文链接:
2、 [资源下载源码:()
2.2 APP 内的国际化切换
iOS APP 内的国际化切换
iOS应用程序中的国际化切换功能
iOS应用程序中的国际化切换功能
文章:<>
原理:
- 开发了一个专门用于解析本地化字符串的应用程序(LanguageManager)。
- 应用内切换语言生效的技术方案:通过释放根控制器并重新初始化一次来实现。
- 针对不同场景设定参数排列顺序以确保正确性。
III 商品模块
3.1 蓝牙打印商品价格标签、交易小票
打印商品价格标签及打印交易小票
生成商品价格标签的同时输出交易小票
生成商品价格标签的同时输出交易小票
1、应用场景:支持打印商品价格标签及交易小票
2、特色功能:支持智能连接常用打印机,并能统一管理蓝牙配对状态统一处理蓝牙配对状态
3、原理文章:<>
4、解决的问题:导致人民币¥符号显示乱码
private
3.2 支持展开折叠的弹出菜单(横向)
该平台提供丰富的资讯资源以及相关的直播内容。
平台名称:Kunnan
获取最新资讯,请访问指定网址:
观看直播,请访问指定地址:
下载完整的学习资料包,请访问下载位置:
如有疑问,请关注我们的公众号【iOS逆向
1.支持展开折叠的弹出菜单的实现思路:
1.1 在keyWindow中添加弹出视图,并将蒙版添加到主窗口(主要原因在于点击屏幕空白区域需隐藏弹出视图)
1.2 展示时采用从右上至左下的动画效果;而当隐藏时,则采用相反的效果(展示过程自上而下)
1.3 内部视图是通过使用RecyclerView来进行布局
1.4 view的frame会根据当前点击的位置计算并转换相应的坐标
2.水平方向弹出菜单视图的应用场景:
2.1. 部门商品管理功能包括以下特点:提供横向伸展视图窗口(支持下架与上架商品、打印商品信息、编辑商品参数以及实现网络同步更新)的操作界面;系统设计充分考虑了用户需求,在完成各项操作后均能方便地对隐藏视图进行重新折叠。

2.2、网店商品目前只包含下架功能:展开折叠视图:(包含上/下架商品功能)

- 竖向弹出菜单视图
侧边下拉菜单:会员功能模块的上方右侧(竖向)]()

IV 、iOS安全资源
4.1 参数签名
请求参数按照ASCII码从小到大排序、拼接、加密
1、在平台获取代码演示地址:访问链接
2、访问博客文章:<>
3、应用场景:网络请求中的参数被有意篡改防护
4.2 敏感逻辑的保护方案
案例:js根据key从本地方法获取设备及签名信息 (完整demo)
为了实现对本地OC接口的签名功能,在本实现中采用C语言进行封装。其中通过C语言实现了签名机制,并将目标函数名称嵌入到特定的结构体内。具体而言,在编译完成后仅保留了目标地址信息,并以函数指针成员的方式进行了存储。这一设计使得编译后的结果仅保留了目标地址信息的同时移除了函数名称及参数列表相关信息。此方案显著提升了逆向分析的成本与难度。
2021-04-14 17:28:28.762113+0800 SignWithjsKey[23919:2084235] getGyqAppParams: {"api_version":"v1.1.4","appid":"3","time":"1618392508","operator":"中国电信","user_id":"https:\/\/kunnan.blog..net\/","vn":"1.0","device_id":"b8eeff0f1612d4b9fba63ba7b47dbf27","channel":"default","device_name":"iPhone8,1","os":"iOS","sign":"b2ad581d2e30730f3aed506fc7593957","openudid":"0dce01d7424ac836d33ef49e20019e920e847e96","token":"#公众号:iOS逆向","root":"1","idfv":"-D089-4021-82A9-65D8E400C711","height":"1334","width":"750","xyz":"0.006973,0.007675,-1.009369","os_version":"14.0","network":"no_network","vc":"1","idfa":"-3693-4940-BEAD-93C59E53FA55"}
通过平台获取软件预览版(可直接复制粘贴至浏览器访问)
通过平台获取软件预览版(可直接复制粘贴至浏览器访问)
1、应用场景:签名函数
2、原理:为了提升代码的安全性特性,在编译过程中可以采用将函数名嵌入结构体中并以成员属性的形式存储的方式实现对函数名称的隐藏保护机制。经过编译后仅保留内存地址信息移除了名称标识符以及参数列表等非敏感信息从而显著提升了程序的反向分析难度以及防御措施的有效性.
3、文章:
4.3 基于NSURLProtocol拦截所有网络请求

[在平台下载 demo version resources:()
文章:
应用场景:
2.1. 自定义请求头字段
2.2. 为HttpClientConfiguration配置代理IP和端口以支持特定隧道访问
2.3. 实现报文级数据加密功能:通过[NW...注入类]实现对HTTP数据包的自动捕获与处理原理:基于该协议实现网络请求拦截功能
支持 intercepting all network requests for iOS applications, including AJAX calls to web pages (excluding WKWebView)特色功能:采用新的DNS解析机制阻止DNS劫持行为发生
V、 逆向
5.1 IPC
Inter process Communication
Inter process Communication
Inter process Communication
Inter process Communication
Inter process Communication
ASO项目使用的技术
ASO项目使用的技术
5.2 分析如何调用的ptrace,并hook ptrace
从下载完整Demo:
<>
文章:<>
去除ptrace的思路:4.1 当运行该程序时,在控制台输出segmentfault 11的情况下,则表明程序内部调用了ptrace功能。
4.2 验证是否调用了ptrace可以通过以下步骤实现:运行debugserver并指定参数-x backboard *:1234 /BinaryPath(这里指的是完整路径),随后设置符号断点b ptrace并继续执行c命令。观察到ptrace的第一行代码位置后,请输入p $lr以获取函数返回地址信息,并结合image list -o -f的ASLR偏移值来计算原始地址值。最后在IDA软件中定位到调用ptrace函数的具体代码段,并分析其调用方式。
4.3 启动ptrace钩子功能。
5.3 进程间的实时通讯方案
该本地socket(用于实现实时通讯目标)
该本地socket(用于实现实时通讯目标)
1、获取路径:<>
2、技术解析:<>
基于Local Socket(TCP)协议实现服务端与客户端的通信机制。
3、应用场景:针对扩展型及容器化应用场景提供实时通信解决方案。
VI、iOS中tabBar按钮再次点击实现界面刷新
<>
iOS中tabBar按钮再次点击实现界面刷新
- 本文首发
<>
- 本文的demo 案例功能:
访问主页时引导用户再次点击tabBar以实现界面数据更新
访问主页时引导用户再次点击tabBar以实现界面数据更新
通过平台获取详细链接资源:...
1、官方链接:
2、适用范围:该平台涵盖不同类型的购物应用,在首页的tabBar区域提供统一界面设计
3、核心功能:当更新数据时会自动旋转tabbar图标。
<>
VII 、HTML字符串与富文本互转
HTML字符串与富文本格式转换(支持本地HTML导入)演示文稿源码
1、下载链接:
2、文章来源:
3、、应用场景:使用系统内置视图UILabel显示服务端返回的带有HTML标记的内容

VIII、iOS开发效率工具
8.1 封装富文本API
封装富文本API,采用block实现链式编程
集成富文本功能模块
1、文章摘要:[链接]
block 的妙用:巧妙地结合block与方法的优点实现iOS中的链式编程
2、显著的功能聚焦于段落样式 NSMutableParagraphStyle以及富文本 NSMutableAttributedString对象
3、下载地址:<>
IX、Q&A
为什么我获取了demo后,在Xcode12中设置为调试模式以捕获编译错误:遇到的错误信息是library not found for -lAXIndicatorView;请问如何解决?

原因:AXIndicatorView这个类目前已从CocoaPods库移除无法获取了


- 解决方法: 你更新 pod ‘AXWebViewController’ 即可。
仅作用于指定库:
pod update AXWebViewController --verbose --repo-update
通过pod update命令可获取最新版本的类库
文章详细介绍了cocoapods的核心功能及其在iOS开发中的应用技巧
。文中通过丰富的实例展示了如何高效地使用cocoapods框架来解决实际开发问题
,并提供了详细的代码示例供读者参考
。此外
,文章还探讨了cocoapods与其他框架的差异与兼容性
,帮助开发者更好地理解其独特的优势与适用场景
。
exit 0% ➜ retail git:(develop) ✗ cat ~/bin/knpod
#!/bin/sh
#该命令只安装新添加的库,已更新的库忽略
pod install --verbose --no-repo-update
#该命令只更新指定的库,其它库忽略
#pod update 库名 --verbose --no-repo-update
exit 0% ➜ retail git:(develop) ✗
see also
本文提供完整源代码包

