- 博客(22)
- 收藏
- 关注
原创 FFmpeg探索之1安装
安装期间遇到各种问题,提示说xxx没有安装,需要执行对应命令,只需要安装提示直接安装就行,完全傻瓜式操作。从很早之前就略微了解一点点FFmpeg,但是一直没有搞过,最近稍微有点时间,自己探索一下,做个记录。首先需要确保已经安装过brew工具,没有的话,需要先去安装brew。期间遇到下载一半中断出错,基本是网络问题,多执行命令几次就好了。没有其他了,安装比较耗时,多点耐心就好。例如mov视频转mp4视频。我整理了一下我的安装命令。每一行是一条执行命令。升级后再执行命令即可。
2024-12-11 10:29:46
226
原创 iOS Runtime
OC是一门动态语言,有些类、成员变量以及方法实现在编译时并没有确定,而是推迟到运行时才决定的。给分类添加属性时,系统只会声明get、set方法,不会帮我们实现,因此想要实现我们可以借助runtime的API来实现。即方法交换时调用原方法的实现,而因为交换方法后,原方法的实现对应方法名称为当前方法名称,因此只需调用自身方法名一次即可。通过Runtime运行时特性,动态创建类,添加成员变量与方法。实例方法存在于类的方法列表中,类方法存在于元类方法列表中。实例对象是类的实例,类对象是元类对象的实例。
2024-11-29 10:04:01
440
原创 iOS Runtime之动态创建类
当遇到一些在App中没有创建过的类,想要动态添加时,可以使用。注册一个已经创建的类,在添加成员变量后使用。例如:云端控制点击响应页面跳转事件。可以动态创建类,指示它的父类。可以给类添加成员变量。
2024-11-29 10:00:00
283
原创 iOS Runtime之方法交换
方法交换交换了方法的实现,因此想要调用原方法的实现,只需要调用一次当前方法的方法名即可。当遇到想要一些特殊场景可能需要用到方法交换,或者给原油方法增加一些新的实现。
2024-11-28 10:00:00
182
原创 iOS Runtime之消息转发
方法开始调用。查找方法缓存列表。找不到进入3。查找方法列表。找不到进入父类继续执行2、3。如果到根类上还找不到进入4。动态解析:即动态给方法添加一个方法实现。如果没有添加,则进入5。快速消息转发:交给其他对象调用方法。如果不行,进入6。常规消息转发:先获取方法签名,方法签名获取成功后做最后补救。补救可以是交给其他对象调用相应方法,或者是给某个方法添加方法实现。如果最后补救都不可以则进入7。崩溃,找不到方法异常。
2024-11-27 09:50:55
328
原创 iOS Runtime之序列化与反序列化
如果不想针对每个属性都写一遍encode、decode,可以考虑使用Runtime动态获取变量执行相关操作。想要吐槽一下归解档。很久没有用这个东西了,今天写的时候,突然发现API都已经改了,之前的API已经过时了。对小对象数据执行保存读取时,不想用数据库等存储方式,可以使用归档。
2024-11-26 17:17:07
201
原创 iOS Runtime之给分类添加属性
给字符串添加一个master属性,设置master属性后,输出结果为maser: +原字符串内容,例如:原字符串为“好好学习天天向上。”,添加master为“张三”后,最终输出master为“张三: 好好学习天天向上。在一些特定的场景下,我们给某些类添加一些自定义属性,能够加快我们的开发速度。或者添加一些属性,能够方便我们的一些操作。因此,如果使用了master的get、set方法,在编译时并不会报错,但运行时会报错。在分类里添加属性时,系统只是为我们声明了get、set方法,但并。
2024-11-26 15:59:18
359
原创 iOS 内存分区
主要存储程序运行中间结果和断点信息,包括函数的参数和局部变量值。主要存储没有初始化的全局变量和静态变量。程序结束后,自动清除。栈是一块连续存储空间,遵循先进后出原则。主要存储已经初始化的全局变量、静态变量和常量。堆并不是连续的内存空间,由链表指针链接。主要存储二进制表示的程序代码。
2024-11-25 17:53:27
214
原创 iOS 传感器之加速计
有趣的是acceleration数据里y的值和屏幕数据相反,应该是UIKit坐标系原因。此外,acceleration数据除了平面x、y以外,还有z,想要3D效果的话可以用上。比如玩小球游戏,通过模拟重力加速度控制小球运动。没有什么了,就先这样吧。
2024-11-20 19:09:28
233
1
原创 iOS 传感器之近距离检测器
例如在需要监听是否近距离使用手机,或者动态监听人是否靠近手机。默认情况是关闭的,当然在不使用的时候最好把它关掉,省电。总结就是:基本用不到,用到了看一眼就行了。
2024-11-20 16:58:42
116
原创 iOS 断点下载
其实核心点就是在再次提交网络请求时,根据业务需要提交你所需要下载的数据段。在一些大文件下载的业务场景中,使用断点下载可以提高软件使用体验。没什么说的了,欢迎交流~s。
2024-11-20 11:15:33
195
原创 iOS 粘性view
类似QQ消息里的粘性消息数量,手指拖动消除等等。也可以做类似的解压小游戏,大概就这样吧。我是封装一个view,所以所有的东西都是在自定义view中进行的。目前考虑它是由三部分组成:使用pan手势,获取点位,然后改变上方圆的位置。距离计算很简单的数学公式计算两个点之间的距离。后图大小改变没什么难度,只需要根据极限距离计算出一个比例,然后改变缩放就行。这里特意提出来只是我当时处理的时候,最开始考虑只是形变,但在画形状图层的时候遇到了点麻烦,后来改成了直接改变后圆的size。形状图层也就是两个圆
2024-11-20 10:44:45
368
原创 iOS ReplicatorLayer相关应用
关于ReplicatorLayer,业务中用的不多,但有些时候可能会很拥有,这里简单记录一下它的相关应用。instanceRedOffset:红色色值变化(和上一个相比)instanceColor:颜色色值为初始颜色*给定值(instanceDelay:延迟时间,主要应用在动画上。instanceTransform:复制时应用的形变。instanceGreenOffset:绿色色值变化。instanceBlueOffset:蓝色色值变化。instanceAlphaOffset:透明度变化。
2024-11-19 15:52:26
316
原创 iOS 半身图翻转效果
想要实现效果,需要用到CATransform3D里的m34,这个模拟物理世界的数据,数值越小越夸张,我用的-1.0 / 500,可根据自身情况探索出合适的数值。为了方便计算,我的下图和上图保留同样的位置,只需要上图的锚点设置成(0.5,1)即可让两张半图严丝合缝的组成一张完整的图。想要实现上下翻转,需要绕x轴旋转,旋转点应该是上图的下边,这样锚点应该落在(0.5,0)上(当然x无所谓)。当然,代码有一点并没有达到我想要的效果,那就是我在松手弹簧动画时,我想要阴影展示随着我动画变化。
2024-11-19 10:50:58
392
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人