
iOS开发
文章平均质量分 86
人生如梦91
诚实、冷静、能吃苦耐劳,乐于学习新知识
展开
-
objc-runtime源码编译
最近在学习objc-runtime的源码,原本旧版本的代码已经编译完成了,但是更新系统之后又不行了,于是下载了最新的源码,重新进行编译,并记录碰到的问题,本文使用的源码版本是objc-runtime-818.2, 使用的Xcode版本是12.4:系统版本macOS Big Sur 11.1,现在开始漫长的编译改错流程:文章目录unable to find SDKsys/reason.h not foundmach-o/dyld_priv.h not foundos/lock_private.h n原创 2021-02-04 16:22:08 · 935 阅读 · 0 评论 -
RN下拉刷新(二):修改RN代码,集成iOS原生下拉刷新
文章目录原创 2019-12-31 16:31:28 · 753 阅读 · 2 评论 -
记一次使用RN实现侧滑删除
最近公司全面推行使用React-Native进行跨平台开发,虽然我对这方面不熟悉,而且对RN也没有啥兴趣,但是也没办法,也没有学啥js和RN的东西,直接刚。正好要实现一个侧滑删除功能,网上搜了一波,没发现啥好的说明,于是决定自己实现一波。但由于自己没有系统的学过RN,所以写的不怎么给力。首先看下效果图,如下所示:要写这个组件,有两个问题要先解决,这个页面已经存在了,我如何能在做较小修...原创 2019-12-10 22:51:45 · 826 阅读 · 0 评论 -
AVFoundation学习笔记(四): 媒体的创建与编辑
组合媒体时间处理CMTimeCMTimeRange创建组合资源示例音频混合自动调节音量视频过渡AVVideoCompositionAVVideoCompositionInstructionAVVideoCompositionLayerInstruction部署视频计算通过和过渡的时间范围创建组合和层指令创建和配置AVVideoComposition应用过渡效果溶解原创 2017-09-14 23:14:57 · 2819 阅读 · 0 评论 -
AVFoundation学习笔记(二):视频播放相关
上一次学习了《AVFoundation开发秘籍》的第一至三章,现在继续学习AVFoundation.视频播放视频播放综述AVPlayerAVPlayerLayerAVPlayerItem播放基础播放视频状态监控时间处理AVPlayer时间监听定期监听边界时间监听取消监听播放结束监听生成缩略图字幕显示airplay获取标题章节数据查找章节启用修剪兼容传统资源原创 2017-09-03 20:46:09 · 21753 阅读 · 0 评论 -
AVFoundation学习笔记(一):音频录制、资源载入
最近在学习《AVFoundation开发秘籍》这本书,以前没有怎么接触过,学习之后瞬间感觉AVFoundation这个框架好强大,值得深入的学习。写点笔记以加强记忆和备忘。AVFoundation入门文本转语音播放和录制音频音频会话分类配置音频会话使用AVAudioPlayer播放音频创建AVAudioPlayer对播放的控制音频中断的处理线路改变的影响使用AVAudioRec原创 2017-09-02 13:02:17 · 13410 阅读 · 3 评论 -
WLFUploadButton
WLFUploadButton.hWLFUploadButton.m main.m效果图:原创 2017-06-23 17:20:56 · 282 阅读 · 0 评论 -
WLFModel
最近真是忙的一逼,程序员和产品真的是死对头,公司新来两个产品,本来项目紧,需求改这样,又改那样。不管是iOS还是Android都对他们发了脾气。我也有句“妈卖批”想对他们说。YYKit的基本流程WLFModel的使用WLFPropertyInfo的定义WLFClassInfo的定义modelWithDictionaryobjc_msgsend的用法执行结果YYKit的基本流程在工作中一原创 2017-06-19 12:05:56 · 405 阅读 · 0 评论 -
线性时间排序
一般说来,我们经常使用的都是比较排序,就是在排序过程中要进行比较操作,事实证明,比较排序的最好的时间复杂度是O(nlogn),但是在一些情况下,可以使用一些线性时间的排序方法。计数排序基数排序桶排序计数排序计数排序是假设输入x个整数,每个数都在0~k之间的一个整数,这样不需要比较操作,就可以将数列排列成序。代码简单如下所示:粗略的排序过程如下图所示:根据上图可知,计数排序总体可以分为以下几个步原创 2017-04-15 17:59:49 · 317 阅读 · 0 评论 -
使用PDFKit写一个基本的PDF阅读器
PDFKit相关类加载PDF文档显示PDF文档滚动控制缩放控制目录视图文档搜索Annotation结束 WWDC 2017 苹果发布了一个新的关于PDF的库—PDFKit, 看起来很不错的样子,现在是时候学习一波了。PDFKit相关类PDFKit的相关类不多,用起来也很容易,比之前苹果的QuartzCore的C语言API使用起来容易太多了。相关类如下:1、PDFDocument原创 2017-11-23 17:43:22 · 4070 阅读 · 0 评论 -
使用FFmpeg+SDL打开Mac摄像头
最近由于项目涉及到音视频方面的一点东西,所以研究了一波FFmpeg,其实我对这方面是非常有兴趣的,但是由于自己不是计算机专业出身,很多其他的东西都不了解,所以只能叹息心有余而力不足。FFmpeg是一个开源的东西,几乎没有文档,幸运的是有雷神为我们铺下了一条学习的道路,我也是跟着这条道路在走下去。可惜的是2016年7月雷神就已离我们而去,我们虽然年纪相仿,但是差距实在是大,我也很膜拜这位年轻的技术大神原创 2017-12-12 13:00:18 · 3048 阅读 · 1 评论 -
iOS编译libx264+libfdk-aac+FFmpeg
最近在学习FFmpeg,感觉基本流程还算清楚明白,不过之前一直是在Mac环境下学习,一个brew install一步搞定,不过我最终的项目是在iOS上,所以今天就试着编译了一下iOS环境下的FFmpeg,还好网上有这方面的文章,我跟着一步一步终于把FFmpeg给编出来了,现在做一个汇总,免得到时候再次编译的时候又要重新去寻找,此次基于FFmpeg-3.4版本编译编译libx264编译libfdk原创 2017-12-15 00:49:46 · 3234 阅读 · 4 评论 -
Objective-C高级编程 要点记录
内存管理BlockGCD内存管理自己生成的对象,自己所持有 (alloc/new/copy/mutableCopy)非自己生成的对象,自己也能持有, 如retain方法不再需要自己持有的对象时释放, 使用release方法无法释放非自己持有的对象autorelease的具体使用方法 1. 生成并持有NSAutoreleasePool对象 ...原创 2018-07-12 18:28:20 · 941 阅读 · 0 评论 -
iOS元类面试一题
好久没有更新博客了,最近又在找工作,公司突然裁员了,骂了隔壁,今天面试的时候遇到了一道程序题,限于本人水平,没有答出来,回来之后经过详细考虑和讨论之后,得到了结果,现在记录于此。题目就是“下面这个程序的输出的结果是什么?”。 刚开始看到这题目的时候我懵逼了,完全不知道是怎么回事。因为从来没有碰到过这种面试题,也没有这么写过。于是回来各种请教,各种查资料,最终终于得到结果。答案就在...原创 2018-07-06 22:45:31 · 1914 阅读 · 2 评论 -
YYKit源码学习——YYMemoryCache
YYKit是在项目开发中经常使用的一个库,我很膜拜作者,很惭愧,同样身为90后,差距实在太大了,别人这么牛逼,我却如此菜鸡,我也知道,到了一定程度,人就会遇到技术瓶颈,对于我,提高自己水平的惟一方法就是阅读源代码,我也一直很想这样学习,下载了很多源代码,但却一直无法静下心来学习,看到那长篇大幅的英文字母就头痛,今日公司无事,于是又瞥见桌面上的YYKit文件夹,于是打开了看一看,挑选了代码比较...原创 2018-07-19 15:58:04 · 1121 阅读 · 0 评论 -
粗略使用OpenSSL编写Apple Push工具
好久没有写过博客了, 自从上家公司裁员,加入新公司之后,每天忙的不可开交,需求不断,每天23点下班,感觉一天24小时都不够用。还好现在大忙的时候已经过去了,临近过年,也没有什么太大的需求了,于是有空就写下博客,记录一下自己做的事。作为一名iOS程序员,推送方面的知识是不可能不接触到的,做推送方面的东西又不可能不调试,每次我都是使用NWPusher这个工具来做测试,用起来确实很方便,但是我却不...原创 2018-12-12 14:48:11 · 299 阅读 · 0 评论 -
3DTouch与TodayWidgets
公司App添加了3DTouch的需求,这个需求不是我做的,做这个需求的同事最后拿出来分享了一波,我也想学一学这东西,毕竟自己也换了个支持3DTouch的iPhone,我让他把他分享的ppt给我,于是就有了这篇博文,权当学习,万一哪天同事不小心看到了这篇文章,希望不要怪我盗用他的资源,在些感谢大飞哥先。文章目录3DTouch简介静态设置动态实现事件处理Peek & PopTodayWi...原创 2019-03-09 23:37:18 · 401 阅读 · 0 评论 -
Dart之旅
最近看见同学都这么努力,而我每天就是上班撸码,下班玩游戏,感觉自己也应该努力一点,做为一个大龄程序员,为了不必淘汰,必须要加强学习。Google出了个Flutter,像ReactNative一样,可以编写移动应用程序,于是决定学习一波,看了一天Dart官网的文档,决定写一篇博客加强记忆,这篇博文就是自己对官网文档的一个翻译。文章目录基本的Dart程序重要概念Dart的关键字变量默认值Fina...翻译 2019-03-12 23:51:02 · 815 阅读 · 0 评论 -
弹出式菜单的编写
效果展示PopMenu的定义PopMenu的实现属性的定义位置的调整隐藏菜单响应菜单点击显示菜单坐标定义分割屏幕蒙版路径结束 在QQ、微信的消息页面,右上角有一个“+”号,点击之后,可以弹出一个菜单,这个菜单最大的特点就是有一个箭头指向点击的按钮,现在就来编写这样一个弹出式菜单效果展示PopMenu的定义PopMenu的类定义如下所示: 如代码所示,首先定义PopM原创 2017-04-04 15:58:12 · 2415 阅读 · 0 评论 -
画个小黄人
刚刚看完《笑点研究所》,贱贱的小黄人真有意思。今天早上,我看到这样一个视频,用代码绘制一个小黄人,本来想看看的,谁知道TM竟然有头无尾,就TM讲了几分钟,于是我决定自己试试动手绘制一个小黄人。首先,我自己是没有美术功底的,所以在网上随便找了一张小黄人的图,就是下面一图: 然后是我自己用代码画的图,如下: 虽然不是100%神似,但是也还过得去,见得了人吧,最后代码如下所示:其实这个代码没什么好讲原创 2017-04-08 15:03:49 · 7192 阅读 · 6 评论 -
图片轮播器
回顾一下之前的实现现在的区别效果展示代码说明图片轮播器是iOS开发中经常用到的一个组件,一般是采用UIScrollView来实现,但是系统的UIScrollView并不支持循环滚动,所以必须要自己手动实现。回顾一下在我从C++转做iOS之后,自己动手实现过一个。由于我本人只学习了不到一个月的iOS,对iOS各种组件的不熟悉,导致在工作中,我经常查找各种资料,开发App也产生了很大的阻碍。那原创 2017-03-10 15:59:46 · 623 阅读 · 0 评论 -
二维码的生成与识别
二维码原创 2016-07-01 15:04:31 · 4761 阅读 · 0 评论 -
iOS面试题纪录
iOS面试题纪录 最近打算换一份工作,参加了几次面试,但是由于自己之前没有过多的准备,另外水平也菜的一逼,所以并没有什么好机会,为了以后再被问到这些问题时不再吞吞吐吐,故特将这些碰到的问题纪录下来。以后如有面试,再继续补充完善什么是继承,什么是重载,什么是重写继承是指一个对象直接使用另一对象的属性和方法。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时原创 2016-03-08 13:45:01 · 619 阅读 · 0 评论 -
工作问题纪录
工作问题纪录原创 2016-03-08 14:00:06 · 478 阅读 · 0 评论 -
断点续传功能的实现
断点续传原创 2016-03-08 15:53:10 · 1404 阅读 · 0 评论 -
关于钥匙串中所有证书签名无效的问题解决纪录
关于钥匙串中所有证书签名无效的问题解决纪录原创 2016-02-15 16:12:17 · 5564 阅读 · 1 评论 -
UIMenuController的使用
UIMenuController的使用 编辑菜单是一个显示的,可以用来执行一个功能的上下文菜单,类似text view里的一段文本或一张图片。主要组成部分是复制、剪切和粘贴等操作,它显示的命令基本是复制、剪切、粘贴、选择和全选等。不过也可以自己增加自定义的菜单项,使得选择它时可以执行其他的一些操作。管理选项和菜单不管用户是复制或剪切一个视图中的某些东西或者其他事,总是会有“一些东西”会被选择,翻译 2016-03-01 14:32:14 · 1938 阅读 · 0 评论 -
自定义UISegmentedControl
自定义UISegmentedControl主要步骤无高亮状态按钮的实现控件的主要实现MyCustomSegmentedControl类MyCustomSegmentedControl类说明initWithItemsArray方法initWithItemsNSStringitem NS_REQUIRES_NIL_TERMINATION方法init方法说明事件的定义效果图自定义U原创 2016-01-07 17:43:38 · 3584 阅读 · 0 评论 -
关于iOS默认中文输入法乱码的Bug解决记录
关于iOS默认中文输入法乱码的Bug解决记录在工作中发现了一个这样的问题,我在项目中用中文输入法发表一个问题,但是中文输入法还没有确认,也就是还没有输入中文的时候,就会出现一个这样的问题,如图所示:然后点击发表,提交数据给后台,退出编辑再查看的时候,结果就出现了?乱码问题,如下图:这个问题困扰了我一段时间,问了公司搞iOS的同事,他们也不知道怎么解决,但是后来我发现当输入中文的时候似乎是选中状态,而原创 2016-01-03 11:47:03 · 9916 阅读 · 4 评论 -
自定义UICollectionView布局
废话说在前面效果展示CustomCarCollectionViewFlowLayout类的定义类说明属性说明internalItemSpacingitemSizesectionEdgeInsetsscalecurrentItemIndex代理定义代码说明prepareLayout手势处理collectionViewContentSizelayoutAttributesF原创 2016-08-20 16:18:16 · 5832 阅读 · 1 评论 -
使用AssetsLibrary库实现系统类似照片浏览器
使用AssetsLibrary库实现系统类似照片浏览器原创 2016-05-13 16:44:27 · 878 阅读 · 0 评论 -
iOS音频播放之AudioQueue(三):网络流媒体的播放
从AudioStreamer讲起为什么要使用CFNetworkCFNetwork示例下载图片代码示例代码说明代码演示流媒体的播放CFNetwork的预处理Seek操作播放完成 在前两篇中讲了使用AudioQueue流式播放本地文件的功能,本篇就来讲讲网络流媒体的播放。其实已经有了本地流式播放功能,网络流媒体播放基本就没问题了,只是数据来源于网络而已,但还是有些问题要注意。从A原创 2016-12-30 13:50:27 · 2819 阅读 · 2 评论 -
iOS音频播放之AudioQueue(二):本地音乐的时长,进度和Seek
在上一篇iOS音频播放之AudioQueue(一):播放本地音乐中,用AudioQueue实现了流式本地文件的播放,心情还是挺激动的,但是并没有获取时长和进度,也没有Seek操作,本节将实现这些功能获取音频时长获取音频播放进度AudioQueueGetCurrentTime参数说明代码示例Seek操作手动计算偏移量AudioFileStreamSeek结束获取音频时长获取音频的时长原创 2016-12-26 17:37:10 · 5088 阅读 · 2 评论 -
iOS音频播放之AudioQueue(终结篇):缓存系统的实现
缓存系统的设计第一次设计第二次设计第三次设计缓存系统的实现缓存文件的命名播放器的初始化计算可读字节标记已缓存区间音频播放Seek操作清理缓存流程图示例程序播放和暂停更新定时器前进和后退进度条拖动状态变化通知退出播放效果演示最终总结代码链接 对于移动开发来说,省流量是必须的。前三篇讲了用AudioQueue来编写流媒体播放,但是缓存的重要不言而喻。有网络的原创 2017-01-03 17:48:30 · 5176 阅读 · 9 评论 -
iOS音频播放之AudioQueue(一):播放本地音乐
AudioQueue简介AudioStreamer说明AudioQueue详解AudioQueue工作原理AudioQueue主要接口AudioQueueNewOutputAudioQueueAllocateBufferAudioQueueEnqueueBufferAudioQueueStart Pause Stop Flush Reset DisposeAudioQueueFre原创 2016-12-23 15:07:45 · 11380 阅读 · 7 评论 -
iOS 7 popViewController Bug解决
虽然iOS 7已经是古董级别的系统了,很多公司要求都从iOS 8开始支持,甚至连Apple最新发布的Xcode 8都已经不支持运行iOS 7的手机真机调试。但还是有些令人蛋疼菊紧的公司非要支持iOS 7甚至iOS 6以下。今天在工作中就发现了这样一个偶发性Bug,频率还挺高。其实这个Bug以前也碰到过,但是以前没有注意,只是解决了这个问题。。问题是这样的,在iOS 8- (iOS 8以下)的系统中原创 2016-10-19 16:13:50 · 1377 阅读 · 0 评论 -
使用AVCaptureSession扫描二维码
AVCaptureSession 二维码原创 2016-07-01 13:00:07 · 6465 阅读 · 2 评论 -
使用CAShapeLayer实现扫描二维码界面
CAShapeLayer简介实现扫描界面awakeFromNib代码说明效果展示 之前写过一篇利用AVCaptureSession扫描二维码的博客,但是那个页面是全屏的,在实际应用中,一般都是中间有一个框,然后二维码对准中间框的时候才能识别。这是怎么实现的呢,经过查找资料,现将方法纪录,供日后查阅。CAShapeLayer简介关于CAShapeLayer的介绍网上有很多,我就引用一段吧。原创 2016-09-02 16:25:13 · 1025 阅读 · 0 评论 -
全透明UINavigationBar的实现
iOS工作中经常会使用全透明的UINavigationBar,当我需要的时候,找了很多资料,有说需要UI给准备一张全透明的图片的,有说要在-viewDidLoad方法中添加如下代码的:[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];原创 2016-09-02 16:40:20 · 592 阅读 · 0 评论 -
自定义UISearchBar和UISearchDisplayController
自定义UISearchBar和UISearchDisplayController自定义UISearchBar和UISearchDisplayController起因步骤效果图主要实现代码实现SearchTextField组件及代理layoutSubviews代码说明实现CustomSearchBar相关组件CustomSearchBar的主要组成layoutSubviews代码说明原创 2016-01-03 11:36:14 · 1068 阅读 · 0 评论