iOS
文章平均质量分 53
桃花仙丶
这个作者很懒,什么都没留下…
展开
-
新建UIWindow方式解决UIAlertController无法弹出问题
背景:非控制器内的弹出事件,present一个UIAlertController但是没有响应。最后采用stack overflow上一个方案,使用创建UIWindow的方式解决因窗口层级问题导致的无法弹出。源自:stack overflow上的问题git地址下面贴一下Dylan Bettermann的方案(个别文件名有所修改)import UIKitclass OwnerWindowAlertController: UIAlertController { private l.原创 2020-10-15 15:49:31 · 1271 阅读 · 2 评论 -
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 · 3796 阅读 · 0 评论 -
iOS-KVO手动实现
KVO,当对象属性值发现变化时会发出通知从而达到监听的功能。当对一个对象属性进行监听时,实际上做了如下几步操作:1.动态生成监听对象的子类 “NSKVONotifying_类名”2.重写子类set方法、调用set方法时发出通知问题在于,如何动态创建子类、重写set方法、动态获取属性值并重新赋值。答案当然是---->runtime以监听一个Test类中go属性为例,在NSObj...原创 2018-11-07 11:35:26 · 406 阅读 · 0 评论 -
iOS数组转字符串(保留格式)
转换前数组为 NSArray *testArray = @[@"1",@"2",@"3",@{@"4":@"5"},@[@"6",@"7"]];转换后字符串为 [1,2,3,{"4":"5"},[6,7]]如果不是想实现类似需求可以不往下看了。先实现字典转字符串的分类(数组内类型支持字符串、字典、数原创 2018-12-04 17:27:26 · 2248 阅读 · 0 评论 -
了解NSObject实现文件(一)
iOS开发(OC)中使用的对象大都继承于NSObject,所以了解NSObject能做些什么、怎么做的很有必要,源文件取自官方源码《objc4-750》头文件的成员变量:在NSObject的头文件里,有一个Class isa的成员变量,点进去看到一个结构体objc_class(继承于objc_object,本身也被看成对象)其中包含了:父类信息superclass(Class类...原创 2019-04-11 11:38:25 · 181 阅读 · 0 评论 -
了解NSObject实现文件(二)
1.- (BOOL)isMemberOfClass:(Class)cls和- (BOOL)isKindOfClass:(Class)cls,都是判断class是否相等,cls这里我们暂且称之为传入类。区别在于isMemberOfClass只将传入类和当前类做了一次比较,而isKindOfClass是将传入类及类向上的继承体系与当前类逐一比较。所以isMemberOfClass用于判断传入类...原创 2019-04-16 14:38:09 · 172 阅读 · 0 评论 -
从iOS角度看三层架构与MVC的不同
MVC作为苹果官方推荐的设计模式在iOS开发中占据主流地位,其它MVVM、MVP等都属于其变种模式。一直都看到“三层架构”,以前天真的以为只是MVC的另一种说法,了解之后才发现是自己想当然了。MVC:model(业务模型)、view(视图)、controller(控制器),在控制器中来调用业务模型去更新视图。iOS中的mode基本上就可以看出数据模型+相关的业务逻辑,view可以看成各种控件(系...原创 2019-05-23 15:10:17 · 486 阅读 · 0 评论 -
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 · 982 阅读 · 0 评论 -
百度统计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 · 484 阅读 · 0 评论 -
OC 手机号码脱敏(隐藏中间四位号码)
NSString *number = @"18888888888"; if (self.number && self.number.length > 7) { number = [number stringByReplacingCharactersInRange:NSMakeRange(self.numb...原创 2018-06-04 14:29:41 · 4102 阅读 · 0 评论 -
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 · 710 阅读 · 0 评论 -
MBProgressHUD等待框背景色与菊花等待框颜色修改
最新版本默认样式为 MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view ];//修改样式,否则等待框背景色将为半透明hud.bezelView.style = MBProgressHUDBackgroundStyleSolidColor;//设置等待框背景色为黑色原创 2017-10-26 10:03:17 · 9217 阅读 · 0 评论 -
iOS实现图片边下载边显示
iOS图片显示时使用Incremental方式解码就可以实现边下载边显示的效果,(SDWebImage没有使用这种方式,所以显示图片是一闪而出)。具体做法是使用CGImageSoureceCreateIncremental(NULL)创建一个空的图片源,在下载图片时,每次获取到最新的Data时都将其更新到图片源并绘制,再更新UIImageView的图片。代码如下: #import ...原创 2017-11-14 17:57:01 · 836 阅读 · 0 评论 -
NSArray、NSMutableArray的copy、mutableCopy
对于NSArray和NSMutableArray的copy问题,有两个点需要确定,一个是复制后数组是否可变,二是复制操作是复制的指针还是复制的内容(浅拷贝、深拷贝)。总结如下(前提,数组中内容是NSString等基本数据类型,如果是自定义类型,则需要看是否实现NSCopy协议以及具体实现方法):对于不可变数组:copy后仍然不可变、只复制指针(浅拷贝)、mutableCopy后变为可变数组...原创 2017-11-20 16:08:43 · 4012 阅读 · 1 评论 -
iOS11 解决MBProgressHUD弹框不显示问题
在iOS11上,多了一个_UIInteractiveHighlightEffectWindow类型窗口,hidden = YES。MBProgressHUD使用[[UIApplication shareApplication] lastObject]获取最上层窗口并添加,此时拿到的窗口为_UIInteractiveHighlightEffectWindow,并不可见。解决办法: 将MBPr原创 2017-11-23 11:29:05 · 2436 阅读 · 0 评论 -
iOS UITableView使用reloadData刷新后TableViewCell向上偏移问题
设置下UITableView的estimatedRowHeight(预估cell高度)属性原创 2018-02-11 09:33:52 · 3222 阅读 · 1 评论 -
OC runtime之消息转发
c语言执行函数时使用“静态绑定”,即在程序编译时期就确定了具体的执行函数(知道函数存储地址)。而OC采用的runtime,使用“动态绑定”,在编译时期并没有确定具体执行函数,在对象或类初始化时生成SEL(方法名)与IMP(函数执行地址)的映射,可以通过改变这种映射关系来修改方法实现。runtime是一种“消息发送”机制,向指定实例对象或者类对象通过objc_msgSend()发送一条包含消息处...原创 2018-02-27 16:19:06 · 260 阅读 · 0 评论 -
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 · 385 阅读 · 0 评论 -
UILabel计算文字宽高后设置控件大小,显示英文时候上方会有横线
引用答案:这个bug很隐蔽,因为你求出来的大小是精度很高的小数,你把计算出的宽度和高度强制转换为整数后,再设置frame就没有问题了。因为对于所有的view 来说,如果frame.size是高精度小数,显示的时候,边界都会有黑线。 原文...转载 2018-03-26 14:08:26 · 189 阅读 · 0 评论 -
hidesBottomBarWhenPushed使用时机
从字面意思可以看出来,当控制器在进行push操作的时候,BottomBar会被隐藏,一般在需要隐藏BottomBar控制器初始化(init)时候设置(必须在Push操作之前进行设置),不可在ViewDidLoad中设置,因为此时push操作已经完成。此设置只对下一级界面生效,如果需要对该控制器下多级子页面进行设置则可以使用继承,在父类中设置此属性为YES。原创 2017-11-01 15:23:25 · 349 阅读 · 0 评论