自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 iOS之load和initialize方法详解

iOS之load和initialize方法详解

2023-07-22 22:24:51 168

原创 iOS一句代码搞定下拉刷新和上拉加载更多

现在的iOS刷新控件层出不穷,但是想找到一个样式完全符合自己基本没有,所以利用空余时间自己实现了一个刷新的控件,通过一个demo来搞明白其中的原理。先来个效果图大概说一下设计思路,在scrollView的顶部和底部分别添加headerView和footView。通过KVO来监听scrollView的contentOffset、contentSize、bounds这个三个属性,根据contentOffset的改变来显示headerView和footView,监听contentSize的目的是让footV

2020-12-01 17:53:30 700

原创 iOS按钮超出父控件部分任能响应点击事件和扩大/缩小响应范围

设计师在设计UI界面时,为了更加有个性通常会把界面设计的比较复杂实现。比如下面这个界面,中间凸起的那个发布按钮。默认情况下,如果点击图片红色区域那块是没有任何响应的,系统会丢弃调这次触摸事件。那我们要怎么满足即使点击红色区域也响应发布按钮的点击事件呢?首先我们必须了解事件的传递过程。当产生一触摸事件,这个触摸事件会被添加到UIApplication管理的事件队列中,所以首先接收到事件的是UIApplication。由于队列的先进先出特性,UIApplication会取出最前面的事件传递给应用程序

2020-09-07 18:55:29 1421

原创 Flutter入门浅谈

作为一个移动端码农,耳闻Flutter已经是几年前的事,Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。当初因为各种顾虑而没有下定决心去学习它。最近Flutter又出现在我的技术圈子中,想着几年过去应该比较成熟、稳定了,也逐渐被国内一些大厂所接纳,某鱼就是使用Flutter来实现的(某票最近也在使用某鱼,还发现了挺多bug,估计不是亲儿子)。于是忍不住去看了一下Flutter的开发文档,被文档中多次提及的富有表现力,漂亮的用户界面、现代的,响应式框架、快速开发

2020-09-01 19:24:31 255

原创 iOS之cocoapods本地组件化详细教程

一个庞大的工程,把公共的功能组件化是一个非常明智的做法。好处只能说是只可意会,不可言传,当你真正落地到项目中去,你就会发现它的魅力所在。如果不知道什么是cocoapods的读者,请移步到万能的度娘。我们直接进入正题,手把手教你搭建本地组件化工程。创建一个名为LocalPod的iOS工程,然后在工程目录下创建本地仓库目录,我把它命名为lcPod,在该目录内创建仓库并命名为 Code。打开终端cd到 Code 目录下面, 创建 podspec 文件,文件名最好与仓库名相同,不然就要修改podspe

2020-08-13 18:14:21 1081

原创 一个简单易用的绘图

最近因项目需求,需要自己定制一个绘图的功能。开始也在网上找了现成的、开源的组件,但是应为样式差别太大、功能不能够满足、修改难度大,所以决定自己实现一个适用项目需求的绘图组件。现在给大家分享一下这个组件,希望能够帮助的上有需要的朋友,代码量不多,修改起来非常容易,使用也很简单。demo地址(求Star????)先上个效果图使用方法非常的简单添加一条折线图self.chartView?.drawLine(values: [188.8,165,177.7,155,155,190], xDescri

2020-07-24 15:29:53 124

原创 《数据结构与算法》之二叉树

作为一个程序员,你肯定听说过二叉树,树是一种非线性结构,比前面所讲的栈、队列这种线性结构复杂很多。我们先通过一张图来了解一下二叉树这种结构我们把没有父节点的节点叫做根节点,也就是图中的节点 E。A 节点就是 B 节点的父节点,B 节点是 A 节点的子节点。B、C、D 这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点。我们把没有子节点的节点叫做叶子节点或者叶节点,比如图中的 G、H、I、J、K、L 都是叶子节点。树有三个比较重要的概念:高度、深度、层,我们还是通过一张图来说明二叉树的存储方

2020-07-23 18:19:17 193

原创 《数据结构与算法》之二分查找

二分查找是一种非常简单易懂的快速查找算法,即使你没有写过二分查找的算法,但是二分思想你在生活中肯定会碰到过。比如猜数字的游戏,从1~100中猜一个数字,每猜一次都会告诉你猜大了还是猜小了,直到猜中为止。现在的你是不是已经有思路了。假如我定的数字是20,按照上面的规则来看下你只需要猜多少次就能够猜中次数猜测范围中间数对比大小第一次1~1005050>20第二次1~502525>20第三次1~251212<20第四次12~25

2020-07-22 18:06:18 165

原创 《数据结构与算法》之排序

如果你是一名程序员,或多或少你都了解过、听说过排序。在项目中我们也会经常用到排序,排序非常重要,现在我在这里分享一些经典的排序算法。先附上demo地址冒泡排序 /// 冒泡排序 /// - Parameter array: 数组 class func bubbleSort(array: inout Array<Int>) { for i in 0 ..< array.count { var end = true

2020-07-07 17:22:44 173

原创 《数据结构与算法》之队列

如何理解“队列”?你可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。我们知道,栈只支持两个基本操作:入栈 push()和出栈 pop()。队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队 enqueue(),放一个数据到队列尾部;出队 dequeue(),从队列头部取一个元素。所以,队列跟栈一样,也是一种操作受限的线性表数据结构。队列的实现有两种方式,基于数组来实现的栈我们称为顺序队列,基于链表来实现的栈我们称为链式队列。我这里只实现

2020-06-12 18:30:14 134

原创 《数据结构与算法》之栈

关于“栈”,我有一个非常贴切的例子,就是一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依次取,不能从中间任意抽出。后进者先出,先进者后出,这就是典型的“栈”结构。从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。栈的实现有两种方式,基于数组来实现的栈我们称为顺序栈,基于链表来实现的栈我们称为链式栈。在此先附上Demo顺序栈1.1 实现//MARK: - 顺序栈class ArrayStack: NSObject

2020-05-30 17:08:13 212

原创 《数据结构与算法》之链表

最近因为在学习《数据机构与算法》,所以有一段时间没有更新博客了。现在通个写一篇关于链表的博客和一个demo来巩固一下最近的学习,把理论转换为“实战”。链表结构五花八门,其中最常见的链表结构有单链表、双向链表和循环链表。顺便一提,如果在面试中涉及到到链表,面试官老喜欢问你一句:数组和链表的区别。只要我们理解掌握了什么是链表才能从结构、存储数据、插入、删除上的差异来回答。在这篇文章先说一下单链表。首先手写一个单链表要写一个单链表就必须弄清楚它的数据结构,来一张图看下它长什么样子清楚了它的数据结构

2020-05-14 15:41:56 275

原创 《iOS开发高手》专栏学习总结

最近把《iOS开发高手》这一专栏的内容全部学完了,感觉受益匪浅。开拓了自己那狭隘的技术栈视野。专栏内容讲述的都是与实际开发息息相关的,围绕 iOS 开发在各个阶段(开发、调试测试、发布和上线)遇到的问题展开,并讲解可以利用哪些技术、哪些方案解决遇到的问题。非常值得我们去学习。接下来了总结一下通过学习这一专栏,自己收获到的知识点,和一些能为我所用并且很快的落地到自己项目中的技术。APP启动速...

2020-04-20 14:18:12 257

原创 简单实用的无痕埋点方案

最近为了响应公司要求,需要对APP进行埋点来观察用户的使用行为而进行了一次对埋点方案的学习。通过学习了解到了三种埋点方案代码埋点:通过手写代码的方式进行埋点,能精准的在需要埋点的地方插入埋点代码。但工作量大,埋点代码遍布整个项目,后期维护难度很大。可视化埋点:将埋点增加和修改的工作可视化了,提升了增加和维护埋点的体验。无埋点:可以理解为全埋点,埋点代码高度聚合,容易管理和维护,适合大量通用...

2020-04-03 16:48:33 655

原创 利用RunLoop来监控APP的卡顿

我们要怎么利用RunLoop的原理来帮我们定位到APP里面的卡顿场景呢?人善良,话不多,我们直接进入正题。从以下代码我们可以看出RunLoop的状态有六种,分别是进入RunLoop、处理timer之前、处理source之前、即将进入休眠、唤醒之后、退出RunLoop /* Run Loop Observer Activities */ public struct CFRunLo...

2020-03-29 18:32:20 470

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除