自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 WKWebView打开本地PDF文件,手势缩放比例设置。

思路:实现UIScrollViewDelegate中scrollViewDidZoom方法,检测scrollView的zoomScale属性,当大于或小于指定比例时强制设置成需要的上下限。

2023-12-14 16:26:30 464

原创 flutter混合项目在iOS14真机debug模式启动闪退

现象:项目中集成了flutter, 使用iOS14系统真机在断开调试后,点击App图标启动闪退。原因:deug模式下,flutter为了实现热重载,默认编译模式为JIT。而iOS14系统对这种编译模式做了限制,导致无法启动。解决方案:1.更改XCode编译模式:使用release模式编译,这个时候flutter编译模式为AOT,可正常启动。2.不更改XCode编译模式:更改flutter编译配置,强制设置为release。找到flutter安装位置,依次打开flutter/packages/

2020-11-25 14:35:11 5249

原创 新建UIWindow方式解决UIAlertController无法弹出问题

背景:非控制器内的弹出事件,present一个UIAlertController但是没有响应。最后采用stack overflow上一个方案,使用创建UIWindow的方式解决因窗口层级问题导致的无法弹出。源自:stack overflow上的问题git地址下面贴一下Dylan Bettermann的方案(个别文件名有所修改)import UIKitclass OwnerWindowAlertController: UIAlertController { private l.

2020-10-15 15:49:31 1235 2

原创 oc实现多数组元素组合排列

实现效果:排列前:@[@[@"A",@"B"],@[@"1",@"2"],@[@"a",@"b"]];排列后:@[@[@"A",@"1",@"a"],@[@"A",@"1",@"b"],@[@"A",@"2",@"a"],@[@"A",@"2",@"b"],@[@"B",@"1",@"a"],@[@"B",@"1",@"b"],@[@"B",@"2",@"a"],@[@"B",...

2019-06-19 19:34:59 957

原创 从iOS角度看三层架构与MVC的不同

MVC作为苹果官方推荐的设计模式在iOS开发中占据主流地位,其它MVVM、MVP等都属于其变种模式。一直都看到“三层架构”,以前天真的以为只是MVC的另一种说法,了解之后才发现是自己想当然了。MVC:model(业务模型)、view(视图)、controller(控制器),在控制器中来调用业务模型去更新视图。iOS中的mode基本上就可以看出数据模型+相关的业务逻辑,view可以看成各种控件(系...

2019-05-23 15:10:17 465

原创 了解NSObject实现文件(二)

1.- (BOOL)isMemberOfClass:(Class)cls和- (BOOL)isKindOfClass:(Class)cls,都是判断class是否相等,cls这里我们暂且称之为传入类。区别在于isMemberOfClass只将传入类和当前类做了一次比较,而isKindOfClass是将传入类及类向上的继承体系与当前类逐一比较。所以isMemberOfClass用于判断传入类...

2019-04-16 14:38:09 160

原创 了解NSObject实现文件(一)

iOS开发(OC)中使用的对象大都继承于NSObject,所以了解NSObject能做些什么、怎么做的很有必要,源文件取自官方源码《objc4-750》头文件的成员变量:在NSObject的头文件里,有一个Class isa的成员变量,点进去看到一个结构体objc_class(继承于objc_object,本身也被看成对象)其中包含了:父类信息superclass(Class类...

2019-04-11 11:38:25 161

原创 iOS数组转字符串(保留格式)

转换前数组为    NSArray *testArray = @[@"1",@"2",@"3",@{@"4":@"5"},@[@"6",@"7"]];转换后字符串为    [1,2,3,{"4":"5"},[6,7]]如果不是想实现类似需求可以不往下看了。先实现字典转字符串的分类(数组内类型支持字符串、字典、数

2018-12-04 17:27:26 2228

原创 iOS-KVO手动实现

KVO,当对象属性值发现变化时会发出通知从而达到监听的功能。当对一个对象属性进行监听时,实际上做了如下几步操作:1.动态生成监听对象的子类 “NSKVONotifying_类名”2.重写子类set方法、调用set方法时发出通知问题在于,如何动态创建子类、重写set方法、动态获取属性值并重新赋值。答案当然是---->runtime以监听一个Test类中go属性为例,在NSObj...

2018-11-07 11:35:26 363

原创 ReactNative-终端命令无法启动模拟器

记录:根据ReactNative中文网的文档一步一步操作配置好环境,打开终端cd进文件夹,输入react-native init test --version 0.44.3创建项目,输入react-native run-ios启动项目,正常打开模拟器。关闭项目之后,重新执行模拟器并没有启动,终端输出We couldn't boot your defined simulator due to...

2018-09-25 18:20:03 3737

转载 百度统计crash定位

引用至https://blog.csdn.net/wahahafang/article/details/79415545操作流程打开终端输入xcrun atos --arch arm64 -o +包路径 -l 基地址+回车+偏移地址+回车偏移地址不一定能定位到具体方法,如果没有输出方法建议依次尝试后面的偏移地址注释:1.包路径 Xcode->Window->Orga...

2018-09-06 17:19:18 459

原创 OC 手机号码脱敏(隐藏中间四位号码)

            NSString *number = @"18888888888"; if (self.number && self.number.length > 7) {            number = [number stringByReplacingCharactersInRange:NSMakeRange(self.numb...

2018-06-04 14:29:41 4052

原创 HTTPS对于加密的应用

HTTPS使用到了非对称加密(RSA等)、对称加密(AES等)、HASH算法(MD5等)。非对称加密:公钥 ->用于加密数据 私钥->用于解密数据对称加密:密钥->用于加密和解密MD5算法: 类似于生成信息快照用于验证信息完整性,为不可逆过程浏览器使用服务器提供的公钥对一段随机密码进行加密并发送给服务器,服务器会使用私钥解密这段密码(非对称加密),中间浏览器和服务器都会对签名进行...

2018-03-29 13:58:18 283

原创 SDWebImage图片加载过程

SDWebImage(5.0.0)是iOS加载网络图片的常用解决方案,以使用UIImageView为例:常见使用场景为:UIImageView *testImageView = [UIImageView new];[testImageView sd_setImageWithURL:[NSURL URLWithString:@"xxxxx"] placeholderImage:[UIIm...

2018-03-26 16:46:12 686

转载 UILabel计算文字宽高后设置控件大小,显示英文时候上方会有横线

引用答案:这个bug很隐蔽,因为你求出来的大小是精度很高的小数,你把计算出的宽度和高度强制转换为整数后,再设置frame就没有问题了。因为对于所有的view 来说,如果frame.size是高精度小数,显示的时候,边界都会有黑线。 原文...

2018-03-26 14:08:26 172

原创 iOS触摸事件传递与响应链

事件的传递过程实际上是寻找最合适响应者过程    控制器中创建如下三个视图    RedView *redview = [[RedView alloc] initWithFrame:CGRectMake(0, 0, 300, 400)];    redview.backgroundColor = [UIColor redColor];    redview.center = self.view.c...

2018-03-09 15:12:14 370

原创 OC runtime之消息转发

c语言执行函数时使用“静态绑定”,即在程序编译时期就确定了具体的执行函数(知道函数存储地址)。而OC采用的runtime,使用“动态绑定”,在编译时期并没有确定具体执行函数,在对象或类初始化时生成SEL(方法名)与IMP(函数执行地址)的映射,可以通过改变这种映射关系来修改方法实现。runtime是一种“消息发送”机制,向指定实例对象或者类对象通过objc_msgSend()发送一条包含消息处...

2018-02-27 16:19:06 242

原创 iOS UITableView使用reloadData刷新后TableViewCell向上偏移问题

设置下UITableView的estimatedRowHeight(预估cell高度)属性

2018-02-11 09:33:52 3189 1

原创 iOS11 解决MBProgressHUD弹框不显示问题

在iOS11上,多了一个_UIInteractiveHighlightEffectWindow类型窗口,hidden = YES。MBProgressHUD使用[[UIApplication shareApplication] lastObject]获取最上层窗口并添加,此时拿到的窗口为_UIInteractiveHighlightEffectWindow,并不可见。解决办法: 将MBPr

2017-11-23 11:29:05 2408

原创 NSArray、NSMutableArray的copy、mutableCopy

对于NSArray和NSMutableArray的copy问题,有两个点需要确定,一个是复制后数组是否可变,二是复制操作是复制的指针还是复制的内容(浅拷贝、深拷贝)。总结如下(前提,数组中内容是NSString等基本数据类型,如果是自定义类型,则需要看是否实现NSCopy协议以及具体实现方法):对于不可变数组:copy后仍然不可变、只复制指针(浅拷贝)、mutableCopy后变为可变数组...

2017-11-20 16:08:43 3973 1

原创 iOS实现图片边下载边显示

iOS图片显示时使用Incremental方式解码就可以实现边下载边显示的效果,(SDWebImage没有使用这种方式,所以显示图片是一闪而出)。具体做法是使用CGImageSoureceCreateIncremental(NULL)创建一个空的图片源,在下载图片时,每次获取到最新的Data时都将其更新到图片源并绘制,再更新UIImageView的图片。代码如下: #import ...

2017-11-14 17:57:01 806

原创 html 样式添加方式及其优先级学习记录

html css有三种方式添加,外部样式表(外部引用)、内部样式表、内联样式。优先级顺序从低到高,概括为距离越近优先级越高,高优先级样式会继承低优先级样式中自己不具备的样式,同时覆盖相同的样式(即低优先级样式失效,只保留高优先级的)。e.g.:1. 外部样式表 在head中引用,存储于专门的.css文件中(一般用于对所有页面通用样式做统一配置,方便修改)<link rel="styleshe...

2017-11-13 15:49:50 637

原创 hidesBottomBarWhenPushed使用时机

从字面意思可以看出来,当控制器在进行push操作的时候,BottomBar会被隐藏,一般在需要隐藏BottomBar控制器初始化(init)时候设置(必须在Push操作之前进行设置),不可在ViewDidLoad中设置,因为此时push操作已经完成。此设置只对下一级界面生效,如果需要对该控制器下多级子页面进行设置则可以使用继承,在父类中设置此属性为YES。

2017-11-01 15:23:25 328

原创 MBProgressHUD等待框背景色与菊花等待框颜色修改

最新版本默认样式为  MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view ];//修改样式,否则等待框背景色将为半透明hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor;//设置等待框背景色为黑色

2017-10-26 10:03:17 9102

空空如也

空空如也

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

TA关注的人

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