首页
学习
活动
专区
工具
TVP
发布

欧阳大哥的轮子

原创技术文章分享
专栏成员
80
文章
119064
阅读量
27
订阅数
iOS文本尺寸自适应异步计算实现
目前市面上的非UI线程文本算高方法或多或少都有一些问题。本文通过逆向和分析UILabel的sizeThatFits方法实现来得到一个最佳的文本算高的精简方法。方法可以运行在任意线程,因此可以有效的应用在那些异步算高或者要求尺寸进行提前计算的场景中。
欧阳大哥2013
2020-07-24
1.5K0
开源UI界面布局框架MyLayout1.9发布
MyLayout是一套功能全面的iOS开源UI界面布局框架。它囊括了前端所有流行的界面布局技术和解决方案,同时具有如下七大特点:
欧阳大哥2013
2019-12-02
1.7K0
UILabel显示定时器文本的跳动问题解决方案
上面的gif图会发现在显示验证码计数时出现跳动和闪烁的问题。目前大多数用来实现定时器显示的控件都是UILabel。
欧阳大哥2013
2019-07-15
1.1K0
UIView中frame属性的内部实现
UIView中用于表征视图在父视图中显示出来的位置和尺寸的属性是frame。 同时系统还提供另外两个属性center和bounds。其中center属性值描述视图的中心点在父视图中的位置,而bounds属性的size部分则描述视图本身固有的尺寸。需要注意的是bounds属性中的origin部分描述的是视图内部坐标系中原点的位置,它影响着里面子视图的位置。除此之外,系统还提供一个transform属性来实现视图的仿射变换: 比如平移、缩放、旋转、倾斜的效果。
欧阳大哥2013
2019-07-02
1.5K0
用AutoLayout实现分页滚动
UIScrollView的pagingEnabled属性用于控制是否按分页进行滚动。在一些应用中会应用到这一个特性,最典型的就是手机桌面的应用图标列表。这些界面中往往每一页功能都比较独立,系统也提供了UIPageViewController来实现这种分页滚动的功能。 实现分页滚动的UI实现一般是最外层一个UIScrollView。然后UIScrollView里面是一个总体的容器视图containerView。容器视图添加N个页视图,对于水平分页滚动来说容器视图的高度和滚动视图一样,而宽度则是滚动视图的宽度乘以页视图的数量,页视图的尺寸则和滚动视图保持一致,对于垂直分页滚动来说容器视图的宽度和滚动视图一样,而高度则是滚动视图的高度乘以页视图的数量,页视图的尺寸则和滚动视图保持一致。每个页视图中在添加各自的条目视图。整体效果图如下:
欧阳大哥2013
2019-06-05
1.9K0
用expect脚本实现Xcode对越狱设备的动态库注入
如果我们想远程登录或者控制一台机器,可以在被操控的设备上安装ssh服务。无论是本地设备使用命令行还是可视化工具都需要预先登录到远程设备中,登录过程需要输入用户名和密码。我们还可以使用scp命令来实现本地设备和远程设备之间的文件拷贝。很多操作系统比如Linux、macOS都内置了ssh服务和客户端相关的功能。要想具体了解ssh可以参考下面几个非常有用的链接:
欧阳大哥2013
2019-05-31
1K0
MyLayout&TangramKit 的重大升级!
MyLayout和TangramKit是一套基于frame之上的UI界面布局库的OC版本和Swift版本。目前最新版本升级为MyLayout1.7.0和TangramKit1.4.0。 ?OC1.7
欧阳大哥2013
2019-05-21
2.1K0
iOS系统的底层通知框架库
观察者模式是一种用于解耦一系列需要相互协作的类之间进行通信的对象行为模式。它定义了对象之间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。观察者模式的实现一般分为两个步骤:消费者注册通知消息监听器、生产者发送通知消息。
欧阳大哥2013
2019-05-14
8180
iOS标准库中常用数据结构和算法之链表
功能:对双向链表进行添加、删除功能。 头文件:#include <search.h> 平台:POSIX 函数签名:
欧阳大哥2013
2019-05-07
6380
iOS标准库中常用数据结构和算法之排序
排序是指将乱序数组变为有序排列的处理。iOS提供了快速排序、堆排序、归并排序、并行排序、基数排序一共5种排序函数。具体每种排序的概念介绍请大家参考相关的文档这里就不再赘述了。下面的表格将会从时间复杂度、稳定性、是否需要分配额外内存、是否对有序数组进行优化、 应用范围、平台支持6个维度来考察各种排序函数:
欧阳大哥2013
2019-05-07
8290
iOS标准库中常用数据结构和算法之查找
我本来想说的是Unix系统C标准库所提供的一些算法和数据结构API,但毕竟带有iOS标题可能更加吸引眼球一些。其实我说的也没有错,因为iOS毕竟是从Unix衍生出来的系统,所以说标题所述也算是正确的。下面将要介绍的几类API,有些可以在POSIX平台中支持,有些则只能在FreeBSD中支持,有些则只有在iOS系统中单独支持。
欧阳大哥2013
2019-05-07
5040
iOS标准库中常用数据结构和算法之二叉排序树
功能:二叉排序树的标准实现是一颗平衡二叉树。二叉排序树主要用来解决高效插入和高效检索以及进行排序的问题。系统分别提供了二叉排序树节点的查找、添加、删除、遍历4个功能。
欧阳大哥2013
2019-05-06
6350
iOS标准库中常用数据结构和算法之KV数据库
对于结构化数据的存储一般我们使用关系型数据库,而对于基于key-value类型的数据存储则不适合用关系型数据库。因此iOS系统也内置了一套基于key-value存储的文件数据库:ndbm。
欧阳大哥2013
2019-05-06
7900
运行时Hook所有Block方法调用的技术实现
iOS系统中一共有:C函数、Block、OC类方法三种形式的方法调用。Hook一个方法调用的目的一般是为了监控拦截或者统计一些系统的行为。Hook的机制有很多种,通常良好的Hook方法都是以AOP的形式来实现的。
欧阳大哥2013
2019-04-09
1.3K0
iOS多设备适配简史以及相应的API支撑实现
远古的iPhone3和iPhone4时代,设备尺寸都是固定3.5inch,没有所谓的适配的问题,只需要用视图的frame属性进行硬编码即可。随着时间的推移,苹果的设备种类越来越多,尺寸也越来越大,单纯的frame已经不能简单解决问题了,于是推出了AutoLayout技术和SizeClasses技术来解决多种设备的适配问题。一直在做iOS开发的程序员相信在下面的两个版本交界处需要处理适配的坎一定让你焦头烂额过:
欧阳大哥2013
2019-03-05
1K0
Thunk程序的实现原理以及在iOS中的应用(二)
thunk程序其实就是一段代码块,这段代码块可以在运行时动态构造也可以在编译时构造。thunk程序除了在第一篇文章中介绍的用途外还可以作为某些真实函数调用的跳板(trampoline)代码,以及解决一些函数参数不一致的调用对接问题。从设计模式的角度来讲thunk程序可以作为一个适配器(Adapter)。本文将重点介绍如何通过编译时的静态代码来实现thunk程序的方法,以便解决上一篇文章对于iOS系统下指令动态构造的约束限制的问题。
欧阳大哥2013
2019-03-05
1.1K0
深入iOS系统底层之CPU寄存器介绍
计算机是一种数据处理设备,它由CPU和内存以及外部设备组成。CPU负责数据处理,内存负责存储,外部设备负责数据的输入和输出,它们之间通过总线连接在一起。CPU内部主要由控制器、运算器和寄存器组成。控制器负责指令的读取和调度,运算器负责指令的运算执行,寄存器负责数据的存储,它们之间通过CPU内的总线连接在一起。每个外部设备(例如:显示器、硬盘、键盘、鼠标、网卡等等)则是由外设控制器、I/O端口、和输入输出硬件组成。外设控制器负责设备的控制和操作,I/O端口负责数据的临时存储,输入输出硬件则负责具体的输入输出,它们间也通过外部设备内的总线连接在一起。
欧阳大哥2013
2018-08-22
1.3K0
深入iOS系统底层之指令集介绍
说到指令集以及CPU架构体系,大家就会想到计算机专业课程里面的计算机体系结构的方面的内容。既然课程中已经有了的内容我就不想那么枯燥的去复述一遍,而是先看一个类的定义:
欧阳大哥2013
2018-08-22
1K0
深入iOS系统底层之汇编语言
要想完全的了解一个系统唯一的方法就是去阅读这个系统的源代码实现!这个原则对于一个iOS程序员也是如此。很幸运的是我们现在处于一个开源代码迸发的美好时代(这里要感谢理查·马修·斯托曼以及他的GNU计划),很多优秀的库都以源代码的形式呈现给大家,甚至连iOS这种封闭的系统也迫于某种压力开放了部分源代码(虽然开放的部分并不一定和真实的相同),这也已经足以给了我们很多热情去窥探其内部的一些实现机制。目前网络上也有非常多的基于苹果的开源而介绍OC2.0的runtime原理以及runloop实现机制以及类的+load方法执行时机等等方面的文章。
欧阳大哥2013
2018-08-22
7540
iOS的MVC框架之模型层的构建
这篇文章是论MVVM伪框架结构和MVC中M的实现机制的姊妹篇。在前面的文章中更多介绍的是一些理论性质的东西,一些小伙伴在评论中也说希望有一些具体设计实践的例子,以及对一些问题进行了更加深入的交流讨论,因此准备了这篇文章。这篇文章将更多的介绍如何来进行模型层构建。
欧阳大哥2013
2018-08-22
9070
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档