iOS精品资源汇总(持续更新)

文章目录

  • 引言
  • I、iOS自定义视图相关热门资源
    • 1.1 《用户协议及隐私政策》弹框
    • 1.2 电子签名
    • 1.3 商品详情页
    • 1.4 上传图片视图的封装【支持删除和添加】
    • 1.5 查看风险商户的证明材料,图片支持滑动切换
    • 1.6 iOS 常用动画【 定点缩放弹窗】
    • 1.7 iOS抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路
    • 1.8 自定义相机( 银行卡/身份证识别OCR、矩形边缘识别)
    • 1.9 收银app必备模块:iOS折扣计算器
    • 1.10 通讯录
    • 1.11 限定文本输入框输入特定的字符个数
    • 1.12 iOS商品类目选择视图
    • 1.13 iOS 自定义tab滑块
  • II 语音播报 & 国际化
    • 2.1 iOS12.1以上在后台或者被杀死无法语音播报的解决方案
    • 2.2 APP 内的国际化切换
  • III 商品模块
    • 3.1 蓝牙打印商品价格标签、交易小票
    • 3.2 支持展开折叠的弹出菜单(横向)
  • IV 、iOS安全资源
    • 4.1 参数签名
    • 4.2 敏感逻辑的保护方案
    • 4.3 基于NSURLProtocol拦截所有网络请求
  • V、 逆向
    • 5.1 IPC
    • 5.2 分析如何调用的ptrace,并hook ptrace
    • 5.3 进程间的实时通讯方案
  • VI、iOS中tabBar按钮再次点击实现界面刷新
  • VII 、HTML字符串与富文本互转
  • VIII、iOS开发效率工具
    • 8.1 封装富文本API
  • IX、Q&A
    • 9.1 为什么我下载demo后,在xcode12中允许报错:library not found for -lAXIndicatorView;请问怎么解决?
  • see also
  • 引言
  • I、iOS自定义视图相关热门资源
    • 1.1 《用户协议及隐私政策》弹框
    • 1.2 电子签名
    • 1.3 商品详情页
    • 1.4 上传图片视图的封装【支持删除和添加】
    • 1.5 查看风险商户的证明材料,图片支持滑动切换
    • 1.6 iOS 常用动画【 定点缩放弹窗】
    • 1.7 iOS抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路
    • 1.8 自定义相机( 银行卡/身份证识别OCR、矩形边缘识别)
    • 1.9 收银app必备模块:iOS折扣计算器
    • 1.10 通讯录
    • 1.11 限定文本输入框输入特定的字符个数
    • 1.12 iOS商品类目选择视图
    • 1.13 iOS 自定义tab滑块
  • II 语音播报 & 国际化
    • 2.1 iOS12.1以上在后台或者被杀死无法语音播报的解决方案
    • 2.2 APP 内的国际化切换
  • III 商品模块
    • 3.1 蓝牙打印商品价格标签、交易小票
    • 3.2 支持展开折叠的弹出菜单(横向)
  • IV 、iOS安全资源
    • 4.1 参数签名
    • 4.2 敏感逻辑的保护方案
    • 4.3 基于NSURLProtocol拦截所有网络请求
  • V、 逆向
    • 5.1 IPC
    • 5.2 分析如何调用的ptrace,并hook ptrace
    • 5.3 进程间的实时通讯方案
  • VI、iOS中tabBar按钮再次点击实现界面刷新
  • VII 、HTML字符串与富文本互转
  • VIII、iOS开发效率工具
    • 8.1 封装富文本API
  • IX、Q&A
    • 9.1 为什么我下载demo后,在xcode12中允许报错:library not found for -lAXIndicatorView;请问怎么解决?
  • see also

引言

本文列出最受欢迎的资源,以便供大家快速查找自己所需的资料

文中的蓝字都是超级链接,点击进入即可

全部资源请访问这个地址:https://download.csdn.net/user/u011018979/

精品文章汇总(持续更新)

I、iOS自定义视图相关热门资源

1.1 《用户协议及隐私政策》弹框

  • iOS 自定义视图:《用户协议及隐私政策》弹框(包含超链接属性)【demo源码支持中英文切换】

1、原理文章:https://blog.csdn.net/z929118967/article/details/103902362
2、功能使用:点击demo的右上架文字进行中英文切换
《用户协议及隐私政策》 弹框的实现步骤:
2.1、自定义TextView,采用富文本属性进行内容设置attributedText(包括下划线NSUnderlineStyleSingle、超链接NSLinkAttributeName 、颜色NSForegroundColorAttributeName 等信息)
2.2、实现代理方法textView:shouldInteractWithURL:inRange,处理点击超链

1.2 电子签名

  • iOS电子签名上篇【核心原理: 旋转特定的屏幕】应用场景:采集电子签名,支持签名界面为横屏其余页面都是竖屏、清除重写、灵活控制提示语信息、以及查看商户协议等

1、原理文章:https://kunnan.blog.csdn.net/article/details/104796781
2、功能:采集电子签名,支持签名界面为横屏其余页面都是竖屏、清除重写、灵活控制提示语信息、以及查看商户协议
3、核心原理: 只旋转特定的屏幕
4、核心步骤:1、viewWillAppear设置横屏2、viewWillDisappear 设置竖屏
5、用法简单:采用block回调电子签名图片

1.3 商品详情页

  • UICollectionView的自适应案例详解:【商品详情页】(核心原理:按照图片的原宽高比例进行显示图片全部内容,并自动适应高度)完整demo源码

1、原理文章:https://kunnan.blog.csdn.net/article/details/112976838
2、应用场景:商品详情页以及需要展示大量图片的界面
3、核心原理
3.1)按照图片的原来宽高比进行缩
3.2)UICollectionView的高度自适应

1.4 上传图片视图的封装【支持删除和添加】

demo源码下载:https://download.csdn.net/download/u011018979/15868813

1、文章:https://kunnan.blog.csdn.net/article/details/106814250
2、应用场景: 上传和展示多张图片的场景,比如风险商户处理、发布商品图片
3、 效果图:
在这里插入图片描述
4、技术特点:使用UICollectionViewCell、UITableViewCell 控件进行搭建,使用Masonry 框架布局,采用MVVM结构。

5、我的其他类似SDK pod ‘KNPodlib’
iOS精品资源汇总(持续更新)_第1张图片

1.5 查看风险商户的证明材料,图片支持滑动切换

iOS查看大图浏览器

从CSDN下载Demo源码:https://download.csdn.net/download/u011018979/16039540

  • 应用场景: 查看多张大图,比如查看风险商户的证明材料,图片支持滑动切换

  • 文章:https://blog.csdn.net/z929118967/article/details/115077471

  • 主要功能:进入查看器之后,可左右滑动查看上/下张,并支持下滑视图退出查看器

iOS精品资源汇总(持续更新)_第2张图片

1.6 iOS 常用动画【 定点缩放弹窗】

  • 将商品添加商品到购物车的动画

从CSDN下载Demo:https://download.csdn.net/download/u011018979/20045082
1、应用场景:购物车模块,将商品添加商品到购物车

2、文章地址:https://blog.csdn.net/z929118967/article/details/103660899

3、视频地址:https://live.csdn.net/v/167358

添加商品到购物车的动画(将商品图片iconImgV 移动到购

  • (定点缩放弹窗)的应用场景:

1、会员详情的右侧下拉操作菜单
iOS精品资源汇总(持续更新)_第3张图片
2、浏览器的右侧下拉菜单
iOS精品资源汇总(持续更新)_第4张图片
3、原文:https://kunnan.blog.csdn.net/article/details/84618986
4、demo下载地址:https://download.csdn.net/download/u011018979/16092830
csdn 仓库demo地址
github 仓库地址
5、相关文章:利用锚点anchorPoint进行实现

1.7 iOS抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路

iOS概率抽奖算法 & 转盘算法


iOS抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路 (从CSDN下载完整Demo)https://download.csdn.net/download/u011018979/16651799

文章:https://kunnan.blog.csdn.net/article/details/115653905
原理:利用CoreGraphics进行自定义转盘的绘制
视频:https://live.csdn.net/v/158749
iOS精品资源汇总(持续更新)_第5张图片

1.8 自定义相机( 银行卡/身份证识别OCR、矩形边缘识别)

  • iOS身份证正反面相机(带拍摄区域边框、半透明遮罩层、支持点击屏幕对焦、自动裁剪出所需大小)_身份证复印边框不明显

1、 资源下载:https://download.csdn.net/download/u011018979/14045495
2、原理文章:https://kunnan.blog.csdn.net/article/details/112309871

  • 矩形边缘识别

    iOS Document Scanner: 矩形边缘识别(边缘检测 ) CIDetectorTypeRectangle
    从CSDN下载Demo源码:https://download.csdn.net/download/u011018979/19260280
    1、应用场景:为了提升用户体验,在OCR识别场景都将利用到边缘检测
    2、原理:采用原生CoreImage框架下CIDetector可进行边缘检测,识别到边缘之后使用CAShapeLayer将边缘绘制并显示
    3、原理文章:https://kunnan.blog.csdn.net/article/details/117367345

  • 身份证信息识别

从CSDN下载Demo源码:https://download.csdn.net/download/u011018979/19265912
1、功能:可自动快速读出信息(姓名、性别、民族、住址、身份证号码)并截取到证件图像
2、应用场景:号码自动填充:信用卡网申、商户进件、实名认证
3、原理:
3.1、自定义相机并利用第三方库SDK libexidcardios 进行识别
3.2、添加自定义的扫描界面(中间有一个镂空窗口和来回移动的扫描线)
3.3、人脸小框检测:人脸区域是否在这个人脸小框内,若在,说明用户的确将头像放在了这个框,那么此时这一帧身份证图像大小正好合适且完整,接下来才捕获该帧,就获得了完整的身份证截图。
4、原理文章:https://kunnan.blog.csdn.net/article/details/117414741

  • 扫描银行卡:

从CSDN下载Demo源码:https://download.csdn.net/download/u011018979/19268420
1、功能:识别信息( 银行名称、 银行卡号)并截取银行卡图像
2、应用场景:快速填充银行卡号的场景,比如商户进件、实名认证
3、原理:
3.1、自定义相机并利用第三方库SDK libexbankcardios.alibbexbankcard.a进行识别(识别次数无限,免费)
3.2、添加自定义的扫描界面(中间有一个镂空窗口和来回移动的扫描线)
4、原理文章:https://kunnan.blog.csdn.net/article/details/117421214
5、如果无法下载Demo,请关注公众号:【iOS逆向】,进行获取

iOS 自定义相机进行银行卡/身份证信息识别方案

1、从CSDN下载demo源码https://download.csdn.net/download/u011018979/19359759
2、原理:自定义相机采集银行卡图片,调用SDK/API进行OCTR识别
3、文章地址:https://kunnan.blog.csdn.net/article/details/117445677
4、应用场景:实名认证、银行卡绑定、信用卡网申
5、思路
5.1、自定义相机识别银行卡/身份证信息的付费方案思路:
将CVImageBufferRef转UIImage之后,可直接调用第三方接口进行OCR
https://kunnan.blog.csdn.net/article/details/117362305
5. 2、自定义相机识别银行卡/身份证信息的免费方案思路:
直接利用libexbankcardios.a和libbexbankcard.a 第三方库的API解析CVImageBufferRef中的银行卡号信息,进而根据卡并规则获取银行名称

1.9 收银app必备模块:iOS折扣计算器

采用NSDecimalNumber 进行表达式的精准计算(计算字符串数学表达式)

1、原理文章:https://kunnan.blog.csdn.net/article/details/84769730
2、背景:之前使用NSExpression 进行表达式的计算,发现一个问题:无法精准小数点位数(1+65 和65+1 的精度就不一样)
3、解决方案:采用的是NSDecimalNumber 进行计算
4、下载地址:https://download.csdn.net/download/u011018979/14038508

1.10 通讯录

iOS处理语言工具CFStringTransform : 智能地处理用户的输入内容,经典应用场景【索引】

  • 从CSDN下载通讯录demo源码

https://download.csdn.net/download/u011018979/19088189
1、原理:通过对用户输入内容,利用CFStringTransform变换,可以轻松实现实现一个通用的搜索index
2、 特色:搜索内容可以是多语言的
3、文章:https://kunnan.blog.csdn.net/article/details/109603377

1.11 限定文本输入框输入特定的字符个数

iOS精品资源汇总(持续更新)_第6张图片

  • 从CSDN下载demo :https://download.csdn.net/download/u011018979/15842447

1、原文:https://kunnan.blog.csdn.net/article/details/86073375
2、主要功能:限定文本输入框输入特定的字符个数,
文本长度计算规则:中文占1,英文等能转ascii的占0.5
3、特色功能: iOS限制联想字符串输入,汉字占2个字符,英文占1个字符,解决的中英文切换输入法联想导致的bug
4、demo需求:风险商户处理界面提供情况说明输入框,限制输入100个字符
5、private repositories : https://github.com/zhangkn/RestrictedInputDemo
6、demo项目采用MVVM进行实现

iOS精品资源汇总(持续更新)_第7张图片

1.12 iOS商品类目选择视图

iOS 商品/经营类目选择视图

下载地址:https://download.csdn.net/download/u011018979/19775162

文章地址:https://kunnan.blog.csdn.net/article/details/106553175
视频地址:https://live.csdn.net/v/167208
商品经营类目选择视图的应用场景:
1、发布商品时选择商品类目
2、商户进件选择经营类目
3、购物类app下单界面的商品类目筛选

在发布商品的时候,选择类目界面的要求视图分为上下部分。

1、 上部分:展示已经选择的类目信息,并清晰的从上倒下罗列对应层级类目信息(悬浮),点击类目的时候,下部分的展示的类目信息切换为同级类目信息供选择。
2、 下部分:展示可供选择的类目信息(支持滚动选中类目)
iOS精品资源汇总(持续更新)_第8张图片

支持清空数据功能

iOS精品资源汇总(持续更新)_第9张图片

1.13 iOS 自定义tab滑块

segment功能+label混合显示;( Slider 双区间)【应用场景:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据】

————————————————
版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/z929118967/article/details/105076636

iOS 自定义tab滑块

iOS精品资源汇总(持续更新)_第10张图片
从CSDN下载Demo:https://download.csdn.net/download/u011018979/19790950

原文:https://blog.csdn.net/z929118967/article/details/105076636
视频地址:https://live.csdn.net/v/156406
需求商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据
应用场景:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据

II 语音播报 & 国际化

2.1 iOS12.1以上在后台或者被杀死无法语音播报的解决方案

iOS NotificationServiceExtension实现VoiceBroadcast【app处于后台/被杀死的状态仍可进行语言播报】iOS12.1以上在后台或者被杀死无法语音播报的解决方案

————————————————
版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
1、原文链接:https://blog.csdn.net/z929118967/article/details/103702284
2、 CSDN资源下载源码:https://download.csdn.net/download/u011018979/14026303

2.2 APP 内的国际化切换

从CSDN下载【iOS APP 内的国际化切换】demo源码:https://download.csdn.net/download/u011018979/19089505

文章:https://kunnan.blog.csdn.net/article/details/103733872
原理:
1、自定义解析本地化字符串的工具类LanguageManager
2、应用内切换语言生效的技术实现:采用销毁根控制器,重新进入一次
3、本地化字符串指定参数顺序

III 商品模块

3.1 蓝牙打印商品价格标签、交易小票

  • 【打印商品价格标签及打印交易小票】demo源码:https://download.csdn.net/download/u011018979/14920529

1、应用场景:打印商品价格标签、打印交易小票
2、特色功能: 实现自动连接最近使用的打印机、统一处理蓝牙状态
3、原理文章:https://kunnan.blog.csdn.net/article/details/85684014
4、解决的问题:人民币¥符号乱码的问题
private

3.2 支持展开折叠的弹出菜单(横向)

文章:https://kunnan.blog.csdn.net/article/details/106406160
视频:https://live.csdn.net/v/173757
demo下载地址:https://download.csdn.net/download/u011018979/20537947
疑问解答,请关注公众号:iOS逆向

1.支持展开折叠的弹出菜单的实现思路:

1.1将弹出视图添加到keyWindow,蒙版也添加到主窗口(主要原因是点击屏幕的空白处,需要隐藏弹出视图)
1.2展示的时候,动画从右上角往左下脚延伸;隐藏的时候,动画从左下脚往右上角收回 (展示的时候,从上往下,即x,y 慢慢变大)
1.3 内部视图采用collectionView进行布局
1.4 view的frame 是根据当前点击的菜单按钮所在的商品cell进行计算和坐标转换的。

2.水平方向弹出菜单视图的应用场景:

2.1、门店商品的支持的功能: 向右横向展开视图(操作:下/上架、打印、编辑、同步网络)支持再次折叠隐藏视图
iOS精品资源汇总(持续更新)_第11张图片

2.2、网店商品目前只包含下架功能:展开折叠视图:(包含上/下架商品功能)
iOS精品资源汇总(持续更新)_第12张图片

  1. 竖向弹出菜单视图

弹出菜单:会员模块的右上角的下拉菜单(竖向)
iOS精品资源汇总(持续更新)_第13张图片

IV 、iOS安全资源

4.1 参数签名

iOS app侧对请求参数进行签名:【请求参数按照ASCII码从小到大排序、拼接、加密】(递归的方式进行实现)

1、从CSDN下载demo地址:https://download.csdn.net/download/u011018979/15483107
2、文章:https://kunnan.blog.csdn.net/article/details/108195721
3、应用场景:防止请求参数被恶意修改

4.2 敏感逻辑的保护方案

案例:js根据key从本地方法获取设备及签名信息 (完整demo)

在OC本地方法封装签名方法,签名方法采用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.csdn.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"}

从CSDN下载Demo:https://download.csdn.net/download/u011018979/16751837

1、应用场景:签名函数
2、原理:为了提高代码的安全性,可以采用把把函数名隐藏在结构体里,以函数指针成员的形式存储。 编译后,只留了下地址,去掉了名字和参数表,提高了逆向成本和攻击门槛.
3、文章:https://kunnan.blog.csdn.net/article/details/115857706

4.3 基于NSURLProtocol拦截所有网络请求

iOS精品资源汇总(持续更新)_第14张图片

从CSDN下载demo资源:https://download.csdn.net/download/u011018979/16768533

1、文章:https://kunnan.blog.csdn.net/article/details/115690756
2、应用场景:
2.1、 自定义请求头的HTTPHeaderField
2.2、针对NSURLSessionConfiguration设置代理IP和端口,让一些特殊的请求走自定义的隧道IP和端口
2.3、对网络请求的数据进行报文级别的加密:使用NSURLProtocol来自动监听HTTP请求并加密解密。
通过[NSURLProtocol registerClass: [NetworkInject class]];注入了自定义的NSURLProtocol类
3、原理:利用NSURLProtocol 拦截 HTTP 请求
基于NSURLProtocol实现iOS应用底层所有网络请求拦截(含网页ajax请求拦截【不支持WKWebView】);
4、特色功能:http-dns解决方法,有效防止DNS劫持。
会直接从本地或特定服务器地址进行DNS解析,是一种避免DNS劫持的措施
https://github.com/zhangkn/KNURLProtocolDemo

V、 逆向

5.1 IPC

iOS AppStore Search optimize【Inter process Communication】之 去掉对rocketbootstrap的Depends依赖

1、下载地址:https://download.csdn.net/download/u011018979/15744262
2、文章:https://kunnan.blog.csdn.net/article/details/114693546
3、目的:是想在自己的deb 自带rocketbootstrapd,避免每次部署都从bigBoss 源更新。
4、相关文章:iOS AppStore Search optimize【 ASO项目使用的技术】之 Inter process Communication By Rrocketbootstrap
————————————————
版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/z929118967/article/details/114694914

5.2 分析如何调用的ptrace,并hook ptrace

从CSDN下载完整Demo: https://download.csdn.net/download/u011018979/15834414

1、https://download.csdn.net/download/u011018979/15834414
2、private 仓库
3、文章:https://blog.csdn.net/z929118967/article/details/78233844
4、去掉ptrace的思路:
4.1、 当程序运行后,使用 debugserver *:1234 -a BinaryName 附加进程出现 segmentfault 11
时,一般说明程序内部调用了ptrace 。
4.2、为验证是否调用了ptrace 可以 debugserver -x backboard *:1234 /BinaryPath(这里是完整路径),然后下符号断点 b ptrace,c 之后看ptrace第一行代码的位置,然后 p $lr 找到函数返回地址,再根据
image list -o -f 的ASLR偏移,计算出原始地址。最后在 IDA
中找到调用ptrace的代码,分析如何调用的ptrace。
4.3、开始hook ptrace。

5.3 进程间的实时通讯方案

local socket(解决扩展和容器应用的实时通讯问题)

1、下载地址:https://download.csdn.net/download/u011018979/15137188
2、原理文章:https://blog.csdn.net/z929118967/article/details/109616038
采用Local Socket方案(TCP)创建服务端和客户端从而达到通讯效果。
3、应用场景:解决扩展和容器应用的实时通讯问题

VI、iOS中tabBar按钮再次点击实现界面刷新

  • video

https://live.csdn.net/v/156107

iOS中tabBar按钮再次点击实现界面刷新

  • 本文首发CSDN

https://kunnan.blog.csdn.net/article/details/77885824

  • 本文的demo 案例功能:

1、当进入首页时提示用户再次点击tabBar可刷新界面数据
2、刷新数据当同时旋转tabbar的图片

  • 从CSDN下载完整地址demo :https://download.csdn.net/download/u011018979/15504711

1、文章地址:https://kunnan.blog.csdn.net/article/details/77885824
2、应用场景:适用于购物类app的首页tabBar,以及购物券类app的首页tabBar
3、特色功能:在更新数据期间旋转tabbar的icon

  • blink

https://blink.csdn.net/details/1175811

VII 、HTML字符串与富文本互转

HTML字符串与富文本互转(加载本地html) demo 源码

1、下载地址:https://download.csdn.net/download/u011018979/15448928
2、文章:https://kunnan.blog.csdn.net/article/details/114015528
3、、应用场景:使用原生视图UILabel显示服务端返回的带有HTML标签的内容
iOS精品资源汇总(持续更新)_第15张图片

VIII、iOS开发效率工具

8.1 封装富文本API

【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)

1、原理文章:https://kunnan.blog.csdn.net/article/details/107835195
block 的妙用:结合block和方法的优点实现iOS的链式编程
2、功能:主要针对段落样式NSMutableParagraphStyle和富文本NSMutableAttributedString进行封装,提升开发效率
3、下载地址:https://download.csdn.net/download/u011018979/14038715

IX、Q&A

9.1 为什么我下载demo后,在xcode12中允许报错:library not found for -lAXIndicatorView;请问怎么解决?

iOS精品资源汇总(持续更新)_第16张图片

原因:这是找不到 CocoaPods库 AXIndicatorView。是 AXWebViewController库依赖于它

iOS精品资源汇总(持续更新)_第17张图片
iOS精品资源汇总(持续更新)_第18张图片

  • 解决方法: 你更新 pod ‘AXWebViewController’ 即可。

1、只更新指定的库,其它库忽略:pod update AXWebViewController --verbose --repo-update
2、pod update会更新所有的类库,获取最新版本的类库

cocoapods 用法文章:https://blog.csdn.net/z929118967/article/details/103830017

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

  • 1、iOS《用户协议及隐私政策》弹框(包含超链接属性)【本文包含完整demo源码,demo支持中英文切换】
    2、UICollectionView的自适应案例详解:【商品详情页】(核心原理:按照图片的原宽高比例进行显示图片全部内容,并自动适应高度)文中包含完整demo源码
    3、iOS NotificationServiceExtension实现VoiceBroadcast【app处于后台/被杀死的状态仍可进行语言播报】iOS12.1以上在后台或者被杀死无法语音播报的解决方案
    4、iOS app侧对请求参数进行签名:【请求参数按照ASCII码从小到大排序、拼接、加密】(递归的方式进行实现)
    5、更多iOS技术文章,请关注 “iOS逆向” 公众号,一起学习,一起进步。20201114103143654.JPG
@[toc]

引言

本文列出最受欢迎的资源,以便供大家快速查找自己所需的资料

文中的蓝字都是超级链接,点击进入即可

全部资源请访问这个地址:https://download.csdn.net/user/u011018979/

精品文章汇总(持续更新)

I、iOS自定义视图相关热门资源

1.1 《用户协议及隐私政策》弹框

  • iOS 自定义视图:《用户协议及隐私政策》弹框(包含超链接属性)【demo源码支持中英文切换】

1、原理文章:https://blog.csdn.net/z929118967/article/details/103902362
2、功能使用:点击demo的右上架文字进行中英文切换
《用户协议及隐私政策》 弹框的实现步骤:
2.1、自定义TextView,采用富文本属性进行内容设置attributedText(包括下划线NSUnderlineStyleSingle、超链接NSLinkAttributeName 、颜色NSForegroundColorAttributeName 等信息)
2.2、实现代理方法textView:shouldInteractWithURL:inRange,处理点击超链

1.2 电子签名

  • iOS电子签名上篇【核心原理: 旋转特定的屏幕】应用场景:采集电子签名,支持签名界面为横屏其余页面都是竖屏、清除重写、灵活控制提示语信息、以及查看商户协议等

1、原理文章:https://kunnan.blog.csdn.net/article/details/104796781
2、功能:采集电子签名,支持签名界面为横屏其余页面都是竖屏、清除重写、灵活控制提示语信息、以及查看商户协议
3、核心原理: 只旋转特定的屏幕
4、核心步骤:1、viewWillAppear设置横屏2、viewWillDisappear 设置竖屏
5、用法简单:采用block回调电子签名图片

1.3 商品详情页

  • UICollectionView的自适应案例详解:【商品详情页】(核心原理:按照图片的原宽高比例进行显示图片全部内容,并自动适应高度)完整demo源码

1、原理文章:https://kunnan.blog.csdn.net/article/details/112976838
2、应用场景:商品详情页以及需要展示大量图片的界面
3、核心原理
3.1)按照图片的原来宽高比进行缩
3.2)UICollectionView的高度自适应

1.4 上传图片视图的封装【支持删除和添加】

demo源码下载:https://download.csdn.net/download/u011018979/15868813

1、文章:https://kunnan.blog.csdn.net/article/details/106814250
2、应用场景: 上传和展示多张图片的场景,比如风险商户处理、发布商品图片
3、 效果图:
在这里插入图片描述
4、技术特点:使用UICollectionViewCell、UITableViewCell 控件进行搭建,使用Masonry 框架布局,采用MVVM结构。

5、我的其他类似SDK pod ‘KNPodlib’
iOS精品资源汇总(持续更新)_第19张图片

1.5 查看风险商户的证明材料,图片支持滑动切换

iOS查看大图浏览器

从CSDN下载Demo源码:https://download.csdn.net/download/u011018979/16039540

  • 应用场景: 查看多张大图,比如查看风险商户的证明材料,图片支持滑动切换

  • 文章:https://blog.csdn.net/z929118967/article/details/115077471

  • 主要功能:进入查看器之后,可左右滑动查看上/下张,并支持下滑视图退出查看器

iOS精品资源汇总(持续更新)_第20张图片

1.6 iOS 常用动画【 定点缩放弹窗】

  • 将商品添加商品到购物车的动画

从CSDN下载Demo:https://download.csdn.net/download/u011018979/20045082
1、应用场景:购物车模块,将商品添加商品到购物车

2、文章地址:https://blog.csdn.net/z929118967/article/details/103660899

3、视频地址:https://live.csdn.net/v/167358

添加商品到购物车的动画(将商品图片iconImgV 移动到购

  • (定点缩放弹窗)的应用场景:

1、会员详情的右侧下拉操作菜单
iOS精品资源汇总(持续更新)_第21张图片
2、浏览器的右侧下拉菜单
iOS精品资源汇总(持续更新)_第22张图片
3、原文:https://kunnan.blog.csdn.net/article/details/84618986
4、demo下载地址:https://download.csdn.net/download/u011018979/16092830
csdn 仓库demo地址
github 仓库地址
5、相关文章:利用锚点anchorPoint进行实现

1.7 iOS抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路

iOS概率抽奖算法 & 转盘算法


iOS抽奖转盘:概率抽奖算法 & 转盘算法 & 转盘主视图的实现思路 (从CSDN下载完整Demo)https://download.csdn.net/download/u011018979/16651799

文章:https://kunnan.blog.csdn.net/article/details/115653905
原理:利用CoreGraphics进行自定义转盘的绘制
视频:https://live.csdn.net/v/158749
iOS精品资源汇总(持续更新)_第23张图片

1.8 自定义相机( 银行卡/身份证识别OCR、矩形边缘识别)

  • iOS身份证正反面相机(带拍摄区域边框、半透明遮罩层、支持点击屏幕对焦、自动裁剪出所需大小)_身份证复印边框不明显

1、 资源下载:https://download.csdn.net/download/u011018979/14045495
2、原理文章:https://kunnan.blog.csdn.net/article/details/112309871

  • 矩形边缘识别

    iOS Document Scanner: 矩形边缘识别(边缘检测 ) CIDetectorTypeRectangle
    从CSDN下载Demo源码:https://download.csdn.net/download/u011018979/19260280
    1、应用场景:为了提升用户体验,在OCR识别场景都将利用到边缘检测
    2、原理:采用原生CoreImage框架下CIDetector可进行边缘检测,识别到边缘之后使用CAShapeLayer将边缘绘制并显示
    3、原理文章:https://kunnan.blog.csdn.net/article/details/117367345

  • 身份证信息识别

从CSDN下载Demo源码:https://download.csdn.net/download/u011018979/19265912
1、功能:可自动快速读出信息(姓名、性别、民族、住址、身份证号码)并截取到证件图像
2、应用场景:号码自动填充:信用卡网申、商户进件、实名认证
3、原理:
3.1、自定义相机并利用第三方库SDK libexidcardios 进行识别
3.2、添加自定义的扫描界面(中间有一个镂空窗口和来回移动的扫描线)
3.3、人脸小框检测:人脸区域是否在这个人脸小框内,若在,说明用户的确将头像放在了这个框,那么此时这一帧身份证图像大小正好合适且完整,接下来才捕获该帧,就获得了完整的身份证截图。
4、原理文章:https://kunnan.blog.csdn.net/article/details/117414741

  • 扫描银行卡:

从CSDN下载Demo源码:https://download.csdn.net/download/u011018979/19268420
1、功能:识别信息( 银行名称、 银行卡号)并截取银行卡图像
2、应用场景:快速填充银行卡号的场景,比如商户进件、实名认证
3、原理:
3.1、自定义相机并利用第三方库SDK libexbankcardios.alibbexbankcard.a进行识别(识别次数无限,免费)
3.2、添加自定义的扫描界面(中间有一个镂空窗口和来回移动的扫描线)
4、原理文章:https://kunnan.blog.csdn.net/article/details/117421214
5、如果无法下载Demo,请关注公众号:【iOS逆向】,进行获取

iOS 自定义相机进行银行卡/身份证信息识别方案

1、从CSDN下载demo源码https://download.csdn.net/download/u011018979/19359759
2、原理:自定义相机采集银行卡图片,调用SDK/API进行OCTR识别
3、文章地址:https://kunnan.blog.csdn.net/article/details/117445677
4、应用场景:实名认证、银行卡绑定、信用卡网申
5、思路
5.1、自定义相机识别银行卡/身份证信息的付费方案思路:
将CVImageBufferRef转UIImage之后,可直接调用第三方接口进行OCR
https://kunnan.blog.csdn.net/article/details/117362305
5. 2、自定义相机识别银行卡/身份证信息的免费方案思路:
直接利用libexbankcardios.a和libbexbankcard.a 第三方库的API解析CVImageBufferRef中的银行卡号信息,进而根据卡并规则获取银行名称

1.9 收银app必备模块:iOS折扣计算器

采用NSDecimalNumber 进行表达式的精准计算(计算字符串数学表达式)

1、原理文章:https://kunnan.blog.csdn.net/article/details/84769730
2、背景:之前使用NSExpression 进行表达式的计算,发现一个问题:无法精准小数点位数(1+65 和65+1 的精度就不一样)
3、解决方案:采用的是NSDecimalNumber 进行计算
4、下载地址:https://download.csdn.net/download/u011018979/14038508

1.10 通讯录

iOS处理语言工具CFStringTransform : 智能地处理用户的输入内容,经典应用场景【索引】

  • 从CSDN下载通讯录demo源码

https://download.csdn.net/download/u011018979/19088189
1、原理:通过对用户输入内容,利用CFStringTransform变换,可以轻松实现实现一个通用的搜索index
2、 特色:搜索内容可以是多语言的
3、文章:https://kunnan.blog.csdn.net/article/details/109603377

1.11 限定文本输入框输入特定的字符个数

iOS精品资源汇总(持续更新)_第24张图片

  • 从CSDN下载demo :https://download.csdn.net/download/u011018979/15842447

1、原文:https://kunnan.blog.csdn.net/article/details/86073375
2、主要功能:限定文本输入框输入特定的字符个数,
文本长度计算规则:中文占1,英文等能转ascii的占0.5
3、特色功能: iOS限制联想字符串输入,汉字占2个字符,英文占1个字符,解决的中英文切换输入法联想导致的bug
4、demo需求:风险商户处理界面提供情况说明输入框,限制输入100个字符
5、private repositories : https://github.com/zhangkn/RestrictedInputDemo
6、demo项目采用MVVM进行实现

iOS精品资源汇总(持续更新)_第25张图片

1.12 iOS商品类目选择视图

iOS 商品/经营类目选择视图

下载地址:https://download.csdn.net/download/u011018979/19775162

文章地址:https://kunnan.blog.csdn.net/article/details/106553175
视频地址:https://live.csdn.net/v/167208
商品经营类目选择视图的应用场景:
1、发布商品时选择商品类目
2、商户进件选择经营类目
3、购物类app下单界面的商品类目筛选

在发布商品的时候,选择类目界面的要求视图分为上下部分。

1、 上部分:展示已经选择的类目信息,并清晰的从上倒下罗列对应层级类目信息(悬浮),点击类目的时候,下部分的展示的类目信息切换为同级类目信息供选择。
2、 下部分:展示可供选择的类目信息(支持滚动选中类目)
iOS精品资源汇总(持续更新)_第26张图片

支持清空数据功能

iOS精品资源汇总(持续更新)_第27张图片

1.13 iOS 自定义tab滑块

segment功能+label混合显示;( Slider 双区间)【应用场景:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据】

————————————————
版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/z929118967/article/details/105076636

iOS 自定义tab滑块

iOS精品资源汇总(持续更新)_第28张图片
从CSDN下载Demo:https://download.csdn.net/download/u011018979/19790950

原文:https://blog.csdn.net/z929118967/article/details/105076636
视频地址:https://live.csdn.net/v/156406
需求商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据
应用场景:商户交易汇总表使用tab滑块进行切换/筛选不同级别的代理商数据

II 语音播报 & 国际化

2.1 iOS12.1以上在后台或者被杀死无法语音播报的解决方案

iOS NotificationServiceExtension实现VoiceBroadcast【app处于后台/被杀死的状态仍可进行语言播报】iOS12.1以上在后台或者被杀死无法语音播报的解决方案

————————————————
版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
1、原文链接:https://blog.csdn.net/z929118967/article/details/103702284
2、 CSDN资源下载源码:https://download.csdn.net/download/u011018979/14026303

2.2 APP 内的国际化切换

从CSDN下载【iOS APP 内的国际化切换】demo源码:https://download.csdn.net/download/u011018979/19089505

文章:https://kunnan.blog.csdn.net/article/details/103733872
原理:
1、自定义解析本地化字符串的工具类LanguageManager
2、应用内切换语言生效的技术实现:采用销毁根控制器,重新进入一次
3、本地化字符串指定参数顺序

III 商品模块

3.1 蓝牙打印商品价格标签、交易小票

  • 【打印商品价格标签及打印交易小票】demo源码:https://download.csdn.net/download/u011018979/14920529

1、应用场景:打印商品价格标签、打印交易小票
2、特色功能: 实现自动连接最近使用的打印机、统一处理蓝牙状态
3、原理文章:https://kunnan.blog.csdn.net/article/details/85684014
4、解决的问题:人民币¥符号乱码的问题
private

3.2 支持展开折叠的弹出菜单(横向)

文章:https://kunnan.blog.csdn.net/article/details/106406160
视频:https://live.csdn.net/v/173757
demo下载地址:https://download.csdn.net/download/u011018979/20537947
疑问解答,请关注公众号:iOS逆向

1.支持展开折叠的弹出菜单的实现思路:

1.1将弹出视图添加到keyWindow,蒙版也添加到主窗口(主要原因是点击屏幕的空白处,需要隐藏弹出视图)
1.2展示的时候,动画从右上角往左下脚延伸;隐藏的时候,动画从左下脚往右上角收回 (展示的时候,从上往下,即x,y 慢慢变大)
1.3 内部视图采用collectionView进行布局
1.4 view的frame 是根据当前点击的菜单按钮所在的商品cell进行计算和坐标转换的。

2.水平方向弹出菜单视图的应用场景:

2.1、门店商品的支持的功能: 向右横向展开视图(操作:下/上架、打印、编辑、同步网络)支持再次折叠隐藏视图
iOS精品资源汇总(持续更新)_第29张图片

2.2、网店商品目前只包含下架功能:展开折叠视图:(包含上/下架商品功能)
iOS精品资源汇总(持续更新)_第30张图片

  1. 竖向弹出菜单视图

弹出菜单:会员模块的右上角的下拉菜单(竖向)
iOS精品资源汇总(持续更新)_第31张图片

IV 、iOS安全资源

4.1 参数签名

iOS app侧对请求参数进行签名:【请求参数按照ASCII码从小到大排序、拼接、加密】(递归的方式进行实现)

1、从CSDN下载demo地址:https://download.csdn.net/download/u011018979/15483107
2、文章:https://kunnan.blog.csdn.net/article/details/108195721
3、应用场景:防止请求参数被恶意修改

4.2 敏感逻辑的保护方案

案例:js根据key从本地方法获取设备及签名信息 (完整demo)

在OC本地方法封装签名方法,签名方法采用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.csdn.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"}

从CSDN下载Demo:https://download.csdn.net/download/u011018979/16751837

1、应用场景:签名函数
2、原理:为了提高代码的安全性,可以采用把把函数名隐藏在结构体里,以函数指针成员的形式存储。 编译后,只留了下地址,去掉了名字和参数表,提高了逆向成本和攻击门槛.
3、文章:https://kunnan.blog.csdn.net/article/details/115857706

4.3 基于NSURLProtocol拦截所有网络请求

iOS精品资源汇总(持续更新)_第32张图片

从CSDN下载demo资源:https://download.csdn.net/download/u011018979/16768533

1、文章:https://kunnan.blog.csdn.net/article/details/115690756
2、应用场景:
2.1、 自定义请求头的HTTPHeaderField
2.2、针对NSURLSessionConfiguration设置代理IP和端口,让一些特殊的请求走自定义的隧道IP和端口
2.3、对网络请求的数据进行报文级别的加密:使用NSURLProtocol来自动监听HTTP请求并加密解密。
通过[NSURLProtocol registerClass: [NetworkInject class]];注入了自定义的NSURLProtocol类
3、原理:利用NSURLProtocol 拦截 HTTP 请求
基于NSURLProtocol实现iOS应用底层所有网络请求拦截(含网页ajax请求拦截【不支持WKWebView】);
4、特色功能:http-dns解决方法,有效防止DNS劫持。
会直接从本地或特定服务器地址进行DNS解析,是一种避免DNS劫持的措施
https://github.com/zhangkn/KNURLProtocolDemo

V、 逆向

5.1 IPC

iOS AppStore Search optimize【Inter process Communication】之 去掉对rocketbootstrap的Depends依赖

1、下载地址:https://download.csdn.net/download/u011018979/15744262
2、文章:https://kunnan.blog.csdn.net/article/details/114693546
3、目的:是想在自己的deb 自带rocketbootstrapd,避免每次部署都从bigBoss 源更新。
4、相关文章:iOS AppStore Search optimize【 ASO项目使用的技术】之 Inter process Communication By Rrocketbootstrap
————————————————
版权声明:本文为CSDN博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/z929118967/article/details/114694914

5.2 分析如何调用的ptrace,并hook ptrace

从CSDN下载完整Demo: https://download.csdn.net/download/u011018979/15834414

1、https://download.csdn.net/download/u011018979/15834414
2、private 仓库
3、文章:https://blog.csdn.net/z929118967/article/details/78233844
4、去掉ptrace的思路:
4.1、 当程序运行后,使用 debugserver *:1234 -a BinaryName 附加进程出现 segmentfault 11
时,一般说明程序内部调用了ptrace 。
4.2、为验证是否调用了ptrace 可以 debugserver -x backboard *:1234 /BinaryPath(这里是完整路径),然后下符号断点 b ptrace,c 之后看ptrace第一行代码的位置,然后 p $lr 找到函数返回地址,再根据
image list -o -f 的ASLR偏移,计算出原始地址。最后在 IDA
中找到调用ptrace的代码,分析如何调用的ptrace。
4.3、开始hook ptrace。

5.3 进程间的实时通讯方案

local socket(解决扩展和容器应用的实时通讯问题)

1、下载地址:https://download.csdn.net/download/u011018979/15137188
2、原理文章:https://blog.csdn.net/z929118967/article/details/109616038
采用Local Socket方案(TCP)创建服务端和客户端从而达到通讯效果。
3、应用场景:解决扩展和容器应用的实时通讯问题

VI、iOS中tabBar按钮再次点击实现界面刷新

  • video

https://live.csdn.net/v/156107

iOS中tabBar按钮再次点击实现界面刷新

  • 本文首发CSDN

https://kunnan.blog.csdn.net/article/details/77885824

  • 本文的demo 案例功能:

1、当进入首页时提示用户再次点击tabBar可刷新界面数据
2、刷新数据当同时旋转tabbar的图片

  • 从CSDN下载完整地址demo :https://download.csdn.net/download/u011018979/15504711

1、文章地址:https://kunnan.blog.csdn.net/article/details/77885824
2、应用场景:适用于购物类app的首页tabBar,以及购物券类app的首页tabBar
3、特色功能:在更新数据期间旋转tabbar的icon

  • blink

https://blink.csdn.net/details/1175811

VII 、HTML字符串与富文本互转

HTML字符串与富文本互转(加载本地html) demo 源码

1、下载地址:https://download.csdn.net/download/u011018979/15448928
2、文章:https://kunnan.blog.csdn.net/article/details/114015528
3、、应用场景:使用原生视图UILabel显示服务端返回的带有HTML标签的内容
iOS精品资源汇总(持续更新)_第33张图片

VIII、iOS开发效率工具

8.1 封装富文本API

【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)

1、原理文章:https://kunnan.blog.csdn.net/article/details/107835195
block 的妙用:结合block和方法的优点实现iOS的链式编程
2、功能:主要针对段落样式NSMutableParagraphStyle和富文本NSMutableAttributedString进行封装,提升开发效率
3、下载地址:https://download.csdn.net/download/u011018979/14038715

IX、Q&A

9.1 为什么我下载demo后,在xcode12中允许报错:library not found for -lAXIndicatorView;请问怎么解决?

iOS精品资源汇总(持续更新)_第34张图片

原因:这是找不到 CocoaPods库 AXIndicatorView。是 AXWebViewController库依赖于它

iOS精品资源汇总(持续更新)_第35张图片
iOS精品资源汇总(持续更新)_第36张图片

  • 解决方法: 你更新 pod ‘AXWebViewController’ 即可。

1、只更新指定的库,其它库忽略:pod update AXWebViewController --verbose --repo-update
2、pod update会更新所有的类库,获取最新版本的类库

cocoapods 用法文章:https://blog.csdn.net/z929118967/article/details/103830017

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

  • 1、iOS《用户协议及隐私政策》弹框(包含超链接属性)【本文包含完整demo源码,demo支持中英文切换】
    2、UICollectionView的自适应案例详解:【商品详情页】(核心原理:按照图片的原宽高比例进行显示图片全部内容,并自动适应高度)文中包含完整demo源码
    3、iOS NotificationServiceExtension实现VoiceBroadcast【app处于后台/被杀死的状态仍可进行语言播报】iOS12.1以上在后台或者被杀死无法语音播报的解决方案
    4、iOS app侧对请求参数进行签名:【请求参数按照ASCII码从小到大排序、拼接、加密】(递归的方式进行实现)
    5、更多iOS技术文章,请关注 “iOS逆向” 公众号,一起学习,一起进步。20201114103143654.JPG

你可能感兴趣的:(iOS编码,ios)