
iOS
文章平均质量分 83
海森堡_lichangan
这个作者很懒,什么都没留下…
展开
-
UI复用封装学习一
enum WHQuizPickItemState { case normal case selected}protocol WHQuizPickItemStyle { var textColor:UIColor {get set} var textFont:UIFont {get set} var backgroundColor:UIColor {get set} var isHidden:Bool {get set}}struct WHQuizP原创 2022-04-17 21:42:40 · 563 阅读 · 1 评论 -
24、OC语言的动态性学习(Runtime)
文章目录一、动态类型二、动态绑定三、动态加载四、消息机制的基本原理消息查找阶段动态方法解析消息转发消息快转发消息慢转发消息发送以及转发机制的总结重写respondsToSelector方法代码实现动态解析快速转发慢速转发五、Method Swizzling(动态方法交换)简介使用Method Swizzling需要的几个方法Method Swizzling 使用方法Method Swizzling 简单使用Method Swizzling 方案一Method Swizzling 方案 BMethod Swi原创 2021-12-13 13:27:56 · 2915 阅读 · 2 评论 -
23、RunLoop学习
RunLoop学习RunLoop的本质为什么main函数可以保持一直运行不退出RunLoop数据结构CFRunLoopCFRunLoopModeSource/Timer/OberserverCFRunLoopSourceCFRunLoopTimerCFRunLoopObserver各个数据结构之间的关系RunLoop的ModeRunLoop事件循环的实现机制点击一个app图标打开app到app杀死,经历了哪些过程RunLoop与NSTimer滑动TableView的时候,我们的定时器还会生效吗?RunLoo原创 2021-12-07 17:02:44 · 628 阅读 · 0 评论 -
22、iOS中的事件传递和视图响应
文章目录触摸事件传递触摸事件的产生触摸事件的传递hitTest方法hitTest的执行过程hitTest伪代码视图响应什么是响应者链条触摸事件响应触摸事件响应基本流程hitTest方法的实际应用扩大点击范围方法一: 重写point(inside:with)方法方法二:重写hitTest方法将触摸事件传递到下面的视图让超出父View的部分仍然可以响应触摸事件不规则图形的点击重写point(inside:with)方法触摸事件传递触摸事件的产生(1)当用户点击屏幕时,会产生一个触摸事件,系统会将该事件加原创 2021-12-07 11:15:19 · 2365 阅读 · 0 评论 -
RxCocoa学习笔记
RxCocoa学习笔记UILabel将数据绑定到 text 属性上(普通文本)将数据绑定到 attributedText 属性上(富文本)UITextField 与 UITextView监听单个 textField 内容的变化(textView 同理)方法一方法二将内容绑定到其他控件上同时监听多个 textField 内容的变化(textView 同理)事件监听UITextView 独有的方法UIButton 与 UIBarButtonItem按钮点击响应按钮标题(title)的绑定按钮富文本标题(attr原创 2021-11-18 16:37:53 · 2522 阅读 · 0 评论 -
RxSwift学习笔记
RxSwift专业术语从“以时间为索引的常量队列”开始 - Observable在RxSwift里,这种概念叫做Observable。其中,最上面的一排,就是一个Observable。从左到右,表示时间由远及近的流动过程。上面的每一个形状,就表示在“某个时间点发生的事件”,而最右边的竖线则表示事件成功结束。创建一个事件为了创建一个包含字符1-9的序列,我们可以在Sources/main.swift中添加下面的代码:import RxSwiftObservable.of("1", "2",原创 2021-11-16 13:17:31 · 3097 阅读 · 0 评论 -
版本号管理
语义化版本号的版本号一般包括四部分:MAJOR、MINOR、PATCH、BUILD。每一部分都由递增的数值组成,例如 1.2.3.4,其中 1 是MAJOR, 2 是 MINOR。如果我们更新 MINOR 版本号,那么下一个版本就是 1.3.0.0。接下来我详细介绍下这四部分。主版本号MAJOR 是指主版本号,通常在重大更新的时候才会需要更新主版本号。例如 iOS 每年都会更新一个主版本号。而对于第三方库来说,主版本号的更新,表示该库的 API 新增了重大功能,或者引入了不可兼容的更新 (breakin原创 2021-11-14 16:05:10 · 1894 阅读 · 0 评论 -
代码管理学习
代码管理Git分支管理主分支功能分支管理功能分支发布分支GitHub Pull Request 流程GitHub 配置其他总结在软件开发当中,代码管理一直是其中重要的一环,每当软件出现问题,我们就需要查看源码,及时发现其中的漏洞加以修复。并且,由于分工不同,软件开发需要多个人共同完成,如何保证每个人编写的代码符合要求,能够相互配合,也是一个重要的问题。所以,一个非常实用的代码管理工具和一套统一的代码管理流程在开发当中必不可少。Git分支管理不同团队有不同的 Git 分支管理方式,根据我们团队多年的经验原创 2021-11-14 13:00:28 · 867 阅读 · 0 评论 -
21、iOS-Universal Link 接入与微信分享的配置
iOS微信分享接入 Univarsal Link第一步: 在苹果开发者中心配置 Associated Domains第二步: 在 xcode 中启用 Associated Domains第三步: 配置 apple-app-site-association 文件第四步:跳转回 APP 的处理第五步:测试微信分享Xcode配置微信开放平台配置第五步: 在AppDelegate里面向微信注册。其他问题有的手机成功了,有的手机就不行呢?服务器换域名了怎么办?移动端配置好,web端如何配置?备忘录和safari中都转载 2021-10-13 15:37:05 · 2036 阅读 · 0 评论 -
20、UICollectionView的使用
20、UICollectionView的使用UICollectionView的设计理念UICollectionView的工作流程UICollectionViewFlowLayout的用法UICollectionViewFlowLayout常用的属性常用方法preparelayoutAttributesForItemlayoutAttributesForSupplementaryViewcollectionViewContentSizelayoutAttributesForElements自定义FlowLay原创 2021-10-11 17:45:31 · 1130 阅读 · 0 评论 -
19、UICollectionView实现自动换行和自动计算collectionView高度
import Foundation//UICollectionView自动换行/// 对齐方向的枚举,enum AlignDirection: Int { case left = 0, //左对齐 rightFlow, //右对齐 左起显示 rightData, //右对齐 右起显示 center //中间对齐}class CollectionViewAlignFlowLayout: UICollec原创 2021-10-11 15:10:44 · 2038 阅读 · 0 评论 -
18、UIStackView横向滚动
1、使用 UIScrollView + UIStackView 的方式2、设置UIStackView的上、左、下、高度,snapKit的 AutoLayout 会自动计算宽度3、在layoutSubviews里要设置scrollow.contentSize,否则不能滑动。import UIKitstruct HorizotalConfigration { var itemWidth:CGFloat = 170 //元素宽度 var itemHeight:CGFloat = 100原创 2021-10-08 13:50:39 · 935 阅读 · 0 评论 -
17、UIStackView的用法
17、UIStackView的用法1、基本介绍1.1 什么是StackView1.2 UIStackView的属性Axis: 子视图的布局方向Alignment: 子视图的对齐方式Distribution:子视图的分布比例(大小)Spacing:子试视图间的间距1.3 UIStackView相关方法1、UIStackView的方法1、基本介绍1.1 什么是StackViewUIStackView 是 UIView 的子类,它不能用来呈现自身的内容,而是用来约束子控件的一个控件。UIStackVie原创 2021-09-29 18:00:03 · 3420 阅读 · 0 评论 -
16、iOS屏幕等比例适配
16、iOS屏幕等比例适配1、基础概念1.1 分辨率相关的概念如果使用物理像素如果使用点1.2 1x、2x、3x的含义2、适配的过程2.1 从UI到开发2.2 适配规则等比缩放变大后的失真的问题适配基础规则文字流式(fluid)控件弹性(flexible)图片等比缩放(scale)举例3、xib等比缩放适配3.1 xib构建的界面约束采用百分比布局布局设置宽度固定宽高比,设定其 Aspect Ratio设置view与父容器边距4、通过代码的方式控制1、基础概念1.1 分辨率相关的概念点(Points原创 2021-09-29 17:01:09 · 2651 阅读 · 0 评论 -
15、AutoLayout使用UIScrollView
15、AutoLayout使用UIScrollView1、Xcode12 在Xib中进行UIScrollView布局1.1 概要1.2 布局方式一、在视图控制器中拖入一个UIScrollView并设置约束二、拖入一个UIView到UIScrollView中,并设置它的约束三、设置内容滚动范围2、SnapKit使用scrollView1、Xcode12 在Xib中进行UIScrollView布局1.1 概要在Xcode11中对UIScrollView在Xib中的布局,苹果引入了Content Layou原创 2021-09-29 15:33:35 · 686 阅读 · 0 评论 -
14、iOS里面的富文本
iOS里面的富文本巧用UITextView实现富文本的点击效果巧用UITextView实现富文本的点击效果class RegisterController: BaseViewController { override func viewDidLoad() { super.viewDidLoad() //用UItextView 实现富文本的功能 let textView = UITextView(frame: CGRect(x:原创 2021-09-25 22:28:46 · 3232 阅读 · 0 评论 -
13、在IB中使用Auto Layout
13、在IB中使用Auto Layout1 最好不要在Auto Layout中设置frame2 约束2.1 Auto Layout的数学公式2.2 约束属性2.3 约束关系2.4 multiplier和constant2.5 约束的创建和添加2.6 约束的优先级3 Auto Layout相关的菜单介绍3.1 Update frames介绍3.2 Embed in Stack介绍3.3 Align介绍3.4 Add New Constraints介绍3.5 Resolve Auto Layout Issue介原创 2021-09-15 19:59:29 · 346 阅读 · 0 评论 -
12、IB之Xib的使用
12、IB之Xib的使用1、解决冲突1.1 解决普通IB文件冲突1.2 解决Xcode8引起的IB文件冲突2、创建xib文件3 关联xib文件与源文件3.1 关联xib文件与UIView子类的源文件3.2 @IBOutlet和@IBAction3.3 理解File's Owner3.4 关联xib文件与UIViewController子类的源文件4、使用xib4.1 使用与UIView子类源文件关联的xib方法一方法二4.2 使用与UIViewController子类源文件关联的xib4.3 xib嵌套使用原创 2021-09-15 19:38:31 · 862 阅读 · 0 评论 -
10、App启动过程分析与UIApplication自定义举例
App启动过程分析与UIApplication自定义举例OC工程里面Swift工程里面OC工程里面在OC工程中中有一个main.m的文件,App启动时首先初始化所有的类,然后调用main.m中的main函数,可以把App的启动过程简单的分为两个阶段:(1)从类的初始化到main函数的执行(2)从main函数的执行到application:didFinishLaunchingWithOptions的执行。mian函数的实现如下:int main(int argc,char* argv[]){ @au原创 2021-09-15 19:26:43 · 335 阅读 · 0 评论 -
11、Interface Builder的简介
Interface Builder的使用1、Interface Builder简介1.1 IB是什么1.2 xib是什么1.3Bundle概念的理解理解Bundle对于IB的指导意义1.4 storyboard是什么1.5 nib是什么1.6 storyboardc是什么2、IB的优点和缺点2.1 IB的优点2.1.1 开发和维护效率高2.1.2 减少大量的UI代码和胶水代码2.1.3 适配变的十分简单2.1.4 IB也可以做一些非UI的事情2.1.5 利用IB学习控件可以达到事半功倍的效果2.2 IB的缺原创 2021-09-14 17:21:51 · 1052 阅读 · 0 评论 -
09、WKWebView的用法
WKWebView的用法iOS如何调试Web代码2.1 iOS 模拟器调试web代码2.2 通过alert等相关方法2、获取WKWebView的准确高度2.1 通过注入JS代码2.2 通过KVO的方式3、WKWebView中Swift与JS交互3.1 基础知识3.1.1 WKScriptMessageHandler协议3.1.2 WKUserContentController3.1.3 WKScriptMessage3.2 JS调用Swift代码3.2 Swift调用JSiOS如何调试Web代码2.1原创 2021-09-02 22:44:48 · 1135 阅读 · 0 评论 -
08、导航栏和状态栏配置
UINavigationController相关的使用1、navigationBar1.1 barStyle1.2 tintColor1.3 barTintColor1.4 isTranslucent1.5 setBackgroundImage1.6 shadowImage1.7 prefersLargeTitles1.8 titleTextAttributes1.9 backIndicatorImage1.10 backgroundColor2、navigationItem2.1 title2.2 ti原创 2021-09-01 23:27:12 · 1252 阅读 · 0 评论 -
07、JSON格式字符串和字典以及数组的互转
07、JSON格式字符串和字典以及数组的互转1、JSON格式的数组转数组类型2、数组转换为JSONString3、字典转换为JSONString4、JSONString转换为字典1、JSON格式的数组转数组类型public extension String { /** 字符串格式: "[\"/img/20210630/node2261205888482908200.PNG\"]" */ func toArray()->[String]?{原创 2021-08-26 13:56:52 · 361 阅读 · 0 评论 -
06、多线程
05、多线程1、多线程基本概念1.1 同步1.2 异步1.3 串行1.4 并行1.5 并发1.6 阻塞调用1.7 非阻塞调用1.8 线程1.9 互斥锁2、并发编程中遇到的问题2.1 竞态条件2.2 死锁1.3 优先级反转3、iOS中的锁3.1 @synchronized3.2 atomic3.3 OSSpinLock 自旋锁为什么OSSpinLock不在安全了自旋锁和互斥锁的区别3.4 NSLock 互斥锁3.5 NSRecursiveLock 递归锁3.6 dispatch_semaphore_t 信号量原创 2021-08-25 10:20:17 · 411 阅读 · 0 评论 -
05、hyperoslo cache学习
05、hyperoslo cache学习描述关键特性使用StorageCodable 类型错误处理配置同步 APIsEntry自定义 Codable异步 APIs到期日期关于图片?处理 JSON 响应描述在这个领域里,Cache并不是独一无二的,但它并不是另一个让你拥有上帝力量的怪物库。除了缓存,它什么都不做,但它做得很好。它提供了一个良好的公共 API,它有开箱即用的实现和巨大的自定义可能性。高速缓存在 Swift 4 中使用Codable来执行序列化。关键特性与 Swift 4 Coda转载 2021-08-23 15:21:35 · 248 阅读 · 0 评论 -
04、iOS本地缓存方案
iOS本地缓存方案1、沙盒机制(sandbox)1.1 Bundle2、UserDefaults参考文章1、沙盒机制(sandbox)在苹果中,每个应用都有自己对应的沙盒,每个应用程序之间不能相互访问非本程序的沙盒。1.1 Bundlebundle就是通常所说的应用程序在手里里面的安装路径,是一个目录,这个目录就是程序的main bundle。这个目录里面包含nib文件、编译代码、以及其他资源的目录等。查看bundle方法,可以通过 itunes下载任意应用,在Finder中找到下载的应用,以归原创 2021-08-23 15:04:48 · 1434 阅读 · 0 评论 -
03、AES加密
03、AES加密1、AES介绍2、AES加密模式介绍2.1、ECB模式(电子密码本模式: Electronic codebook)2.2、CBC模式(密码分组链接:Cipher-block chaining)2.3、CTR 模式(计算器模式:Counter)2.4、CFB 模式(密文反馈:Cipher feedback)2.5、OFB 模式(输出反馈:Output feedback)3、AES 加密-iOS 与 Java 的同步实现3.1、密钥长度3.2、加密模式3.3、填充方式3.4、初始向量3.5、iO原创 2021-08-20 17:10:22 · 1793 阅读 · 0 评论 -
02、Moya
Moya1、Moya的使用2、Moya常见文件解析2.1 MoyaProvider2.1.1 MoyaProvider 初始化EndpointClosureRequestClosureStubClosureManagercallbackQueuepluginstrackInflights2.1.2 MoyaProvider 发送请求requesttargetcallbackQueueprogresscompletion2.2 MoyaProvider+Defaults2.3 MoyaProvider+Int原创 2021-08-17 16:31:20 · 1478 阅读 · 0 评论 -
01、Objective-C中的循环引用
1、循环引用的类型1.1 自循环引用1.2 相互循环引用1.3 多循环引用2、常见循环引用(1)、代理(2)、Block(3)、NSTimer(4)、大环引用3、Swift中处理循环引用的办法3.1、一方属性可以为nil时,使用weak在我们的Person和Apartment例子里,由于Person.apartment和Apartment.tenat都可以为nil,我们只要选择其中一个属性,把它指定为weak就可以了。当然,你也可以把它们都指定为weak,但这并不必要。clas原创 2021-08-11 17:16:26 · 449 阅读 · 0 评论