IOS

详解Objective C 中Block如何捕获外部值

2022-09-04
目录 引言 自动变量 静态变量.静态全局变量与全局变量 带 __block 的自动变量 捕获对象 __block 对象类型的捕获 引言 Block 本质上也是一个 Objective-C 对象,它内部也有个 isa指针.Block 是封装了函数调用以及函数调用环境的 Objective-C 对象.Block 的底层结构如下图所示: Block 对于不同类型的值会有不同的捕获方式,本文将通过代码展示其对于各种场景下的外部值是如何进行捕获的. 自动变量 首先展示源代码: int main(int a

scrollview tableView嵌套解决方案示例

2022-08-31
目录 正文 效果预览: 核心代码就是在父视图.子试图的滚动判断 正文 在网上找了很多,没有喜欢的方案.也参考了众多设计,做了一款自认为比较简洁.完美的方案: 大致思路:外层放置scrollview作为容器,容器内上部分topView,下部分tableView.当tableView滚动时,如果topView还在展示区域,就设置topView的y坐标,让topView跟随同步上移. (注意:如果不设置tableView的headerView,tableView.和topView都会同时上移不是我想要

IOS开发Swift 与 OC相互调用详解

2022-08-29
目录 1.创建桥接文件 2.Swift调用OC NS_SWIFT_NAME.NS_SWIFT_UNAVAILABLE NS_REFINED_FOR_SWIFT 规则 3.OC调用Swift 4.坑点 1.创建桥接文件 在创建另一种语言的文件时XCode会提示创建项目名-Bridging-Header.h的桥接文件 2.Swift调用OC 1.创建OC文件 #import "MyViewController.h" @interface MyViewController () @end @

源码解析ios开发SDWebImage方法

2022-08-24
目录 引言 源码解析 字典操作 看一下调用下载函数前的实例化过程 快速查找缓存的方法回调 开始进入查找函数 总结一下函数调用 1.先调用 2.设置图片 引言 在着手写第二篇的时候,发现这个SDWebimage确实吧NSOperation用的太美了.确实可能帮你理解NSOperation和NSOperationQueue,当然还有Block的队列.还有一个GCD. 各位看官在看的时候可以着重的看看他的operatinQueue的队列.看看是怎么添加到队列的以及是怎么移除队列.在后面的文章就会提到他

iOS小技能之字典转模及对象相等性示例详解

2022-08-16
目录 前言 I 字典转模型 1.1 字典转模型的实现步骤 1.2 字典转模型的过程 II 对象的相等性 & 本体性 2.1 相等性检查 2.2 Foundation 框架中,自己实现的相等性检查 2.3 字符串驻留 III 代码重构(前提是已经实现了基本功能) see also 前言 字典转模型 /** 通常实现字典实例化模型,都实现了以下模型的实例化方法*/ //使用字典实例化模型 - (instancetype) initWithDictionary :(NSDictionary *) ap

iOS文件预览分享小技能示例

2022-08-14
目录 前言 I 第三方SDK分享文件 1.1 微信SDK 1.2 友盟SDK II 原生API的文件预览及其他应用打开 2.1 预览文件 2.2 文件分享 2.3 控制是否显示copy. print.saveToCameraRoll III 案例 3.1 文件下载和预览 3.2 使用数据模型保存下载文件路径 3.3 使用数据模型分享文件 3.4 清理缓存 前言 应用场景:文件下载.打印 I 第三方SDK分享文件 1.1 微信SDK /** enum WXScene { WXSceneSessio

Flutter Module添加到iOS项目示例详解

2022-08-11
目录 1. 创建flutter module 2. flutter 模块嵌入原生应用 3. flutter模块和原生通信 小结 1. 创建flutter module 摘要:我们实际开发开始作为混合开发,可能会把一个模块使用flutter开发,之后嵌入到iOS项目中.比如说我们的商城模块使用flutter开发,这样android和iOS都可以使用. 我们通常会把iOS项目和 flutter module在同一目录,我们创建一个商城的module flutter create --template

Flutter GetPageRoute实现嵌套导航学习

2022-08-11
目录 1. 嵌套导航-GetPageRoute 2. 自定义拓展 3. 使用bottomNavigationBar 4.小结 1. 嵌套导航-GetPageRoute 本文主要介绍在Getx下快速实现一个嵌套导航 嵌套导航顾名思义,我们导航页面中嵌套一个独立的路由,效果如下 点击跳转 代码如下,也是比较简单 return Scaffold( appBar: AppBar(title: const Text('嵌套导航'),), body: Navigator( key: Get.nestedKe

Flutter绘制3.4边形及多边形渐变动画实现示例

2022-08-09
目录 正文 绘制3.4边形 整数边形的绘制 分数边形的绘制 具体代码 效果改进1 效果改进2 正文 项目被优化了,人也跟着被优化了,正好趁这一个月整理整理关于flutter的一些东西. 绘制3.4边形 先看一下效果图: 起因是上上上上上个月浏览flutter的canvas相关内容时,点进去一个网站,看到一个让我眼前一亮的动效: 作者用的代码是swift的,我没细看,不过他文章里的一句话让我醍醐灌顶: That is, we want the shape be asked to draw mult

Objective-C优雅使用KVO观察属性值变化

2022-08-08
目录 引言 KVOController YYCategories 引言 KVO 是苹果为我们提供的一套强大的机制,用于观察属性值的变化,但是大家在日常开发中想必多少也感受到了使用上的一些不便利,比如: 添加观察者和移除观察者的次数需要一一对应,否则会 Crash. 添加观察者和接受到属性变更通知的位置是分开的,不利于判断上下文. 多次对同一个属性值进行观察,会触发多次回调,影响业务逻辑. 为了解决上述三个问题,业界提出了一些方便开发者的开源方案,我们一起来看一下. KVOController K

iOS搭建简易购物车页面

2022-08-08
本文实例为大家分享了iOS实现简单购物车页面的搭建,供大家参考,具体内容如下 1.基础页面的搭建 在storyboard的cell中创建控件并进行约束,继承自定义的AZWineCell 将cell中的子控件和自定义的AZWineCell一一进行连线 @property (weak, nonatomic) IBOutlet UIImageView *iconView; @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @propert

iOS开发实现抽屉效果

2022-08-08
iOS开发之如何实现“抽屉”效果,供大家参考,具体内容如下 现在基本上每一个App中左划都会出现一个页面,基本上都是只占主页面的一部分,效果就像是一个抽屉一样.最近在写项目时,关于如何达到抽屉效果,总结了一些东西.先看看效果图: 实现过程 首先我们需要去创建一个新的视图控制器,让它作为我们的要实现的抽屉的根视图,在此视图控制器我们要添加对应的左视图,要是需要右视图也可以添加,然后设定方法: @property (nonatomic, strong) UIViewController *rootV

Objective-C之Category实现分类示例详解

2022-08-08
目录 引言 编译时 运行时 引言 在写 Objective-C 代码的时候,如果想给没法获得源码的类增加一些方法,Category 即分类是一种很好的方法,本文将带你了解分类是如何实现为类添加方法的. 先说结论,分类中的方法会在编译时变成 category_t 结构体的变量,在运行时合并进主类,分类中的方法会放在主类中方法的前面,主类中原有的方法不会被覆盖.同时,同名的分类方法,后编译的分类方法会“覆盖”先编译的分类方法. 编译时 在编译时,所有我们写的分类,都会转化为 category_t 结

iOS简单抽屉效果的实现方法

2022-08-07
本文实例为大家分享了iOS实现简单抽屉效果的具体代码,供大家参考,具体内容如下 实现思路及步骤: 1.首先准备要滑动的view #warning 第一步 - (void)addChildView {     // left     UIView *leftView = [[UIView alloc] initWithFrame:self.view.bounds];     leftView.backgroundColor = [UIColor greenColor];     [self.vie

混合栈跳转导致Flutter页面事件卡死问题解决

2022-08-07
目录 问题来源 问题难点 问题定位 问题确定 问题解决 总结 问题来源 在我们升级Flutter2.5后,测试在走整个业务流程中发现了有页面卡死现象,于是给我提了一个BUG. 在xx页面多次操作后,页面卡死,页面还可以滚动但是无法跳转,点击长按事件都失效了. 在我多次测试后发现,确实存在这个问题,而且老版本也都存在. 问题难点 复现难 问题定位 最开始,我先确定了失效情况下,事件源头有没有正确发送,所以,先在_dispatchPointerDataPacket方法上添加了断点.结果发现都是正常.

iOS Objective-c实现左右滑动切换页面

2022-08-07
本文实例为大家分享了iOS Objective-c实现左右滑动切换页面的具体代码,供大家参考,具体内容如下 ScrollView + n个view 1.storyboard布局一个ScrollView 2.拖出两个输出口,定义三个属性 @property (weak, nonatomic) IBOutlet UIScrollView *XMScrollView; @property (weak, nonatomic) IBOutlet UIView *scrollContentView; ///

Objective-C const常量的优雅使用方法

2022-08-07
目录 正文 Objective-C 的常量声明方式 在 Objective-C 中使用 let 来声明常量 正文 在编写代码时经常要使用常量,来替代 magic number.比较简单的做法是通过预处理指令 #define 来实现. #define ANIMATION_DURATION 0.3 上述预处理指令会在编译时的预处理阶段会将代码中 ANIMATION_DURATION 字符串替换为 0.3.这种定义常量的方式比较简便,但是存在两个问题: 丢失了类型信息. 若该预处理指令声明在头文件中,

iOS实现简易的抽屉效果

2022-08-06
本文实例为大家分享了iOS实现简易的抽屉效果的具体代码,供大家参考,具体内容如下 1.添加需要实现抽屉效果的三个视图,这里需要注意主视图需要放在最后添加 // 左边视图  ... // 右边视图   ... // 主视图     UIView *mainView=[[UIView alloc]initWithFrame:self.view.bounds];     mainView.backgroundColor=[UIColor greenColor];     _mainView=mainV

iOS开发实现搜索框(UISearchController)

2022-08-06
最近自己在写一个APP,其中需要实现搜索框搜索功能,于是乎就想写篇博客介绍下UISearchController和搜索框的实现. 我写的是一个天气预报APP,直接以我APP中的源代码来详细介绍下搜索框的实现. 注:在iOS 8.0以上版本中, 我们可以使用UISearchController来非常方便地在UITableView中添加搜索框. 而在之前版本中, 我们还是必须使用UISearchBar + UISearchDisplayController的组合方式. 初始化UISearchCont

iOS实现UIButton的拖拽功能

2022-08-04
本文实例为大家分享了iOS实现UIButton拖拽功能的具体代码,供大家参考,具体内容如下 在APP界面中,把资讯等功能设置为悬浮的Button并且能够让用户自己拖拽调整位置很常用.这里实现一下上述的功能,我们先看一下效果图 这里给UIButton的拖拽的范围进行了设定,超过了这个区域则强行结束拖拽. 我们知道UIButton是自带手势事件的,但我们不选择使其自带的手势事件来响应拖拽,其原因为自带的手势不好得到和控制拖拽的状态.我们创建一个 UIPanGestureRecognizer 添加给U