Fork me on GitHub
代码改变世界

[置顶] iOS开发系列文章(持续更新……)

2014-09-21 22:17 by KenshinCui, 143954 阅读, 收藏, 编辑
摘要:iOS开发系列的文章,内容循序渐进,包含C语言、ObjC、iOS开发以及日后要写的游戏开发和Swift编程几部分内容。文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大家交流,新建一个iOS技术交流群,欢迎大家加入:64555322(已满) 132785059(已满) 阅读全文

iOS开发tip-图片方向

2020-02-03 16:17 by KenshinCui, 206 阅读, 收藏, 编辑
摘要:相信稍微接触过iOS图片相关操作的同学都遇到过图片旋转的问题,另外使用[AVFoundation](https://developer.apple.com/documentation/avfoundation/cameras_and_media_capture/capturing_still_and_live_photos)进行拍照的话就会遇到前后摄像头切换[mirror](https://developer.apple.com/documentation/avfoundation/avcaptureconnection/1389172-isvideomirrored)问题就让人更摸不着头脑了。今天就简单和大家聊一下iOS的图片方向问题。 阅读全文

iOS滤镜系列-滤镜开发概览

2020-01-12 02:35 by KenshinCui, 246 阅读, 收藏, 编辑
摘要:<img src="http://images.cnblogs.com/cnblogs_com/kenshincui/271452/o_swift.png" class="desc_img">滤镜最早的出现应该是应用在相机镜头前实现自然光过滤和调色的镜片,然而在软件开发中更多的指的是软件滤镜,是对镜头滤镜的模拟实现。当然这种方式更加方便快捷,缺点自然就是无法还原拍摄时的真实场景,例如无法实现偏光镜和紫外线滤色镜的效果。今天简单介绍一下iOS滤镜开发中的正确姿势,让刚刚接触滤镜开发的朋友少走弯路。 阅读全文

iOS开发调试概览

2019-11-28 20:30 by KenshinCui, 1250 阅读, 收藏, 编辑
摘要:<img src="http://images.cnblogs.com/cnblogs_com/kenshincui/271452/o_swift.png" class="desc_img">我们都知道Xcode默认的调试器是LLDB(在此之前使用的是GDB),但是关于LLDB的debug技巧并非所有人都比较清楚,可能所有人都知道p或者po命令打印一些变量。但是实际的情况时这些还远远不够。比如说有没有一些情况下crash无法定位到有用信息,直接出现exc_bad_access,有没有遇到过每次调试一个UI就要重新run一次Xcode(话说编译时间真的影响一个UI开发者的效率)。 阅读全文

iOS开发tips-PhotoKit

2019-11-17 16:03 by KenshinCui, 221 阅读, 收藏, 编辑
摘要:概述PhotoKit应该是iOS 8 开始引入为了替代之前ALAssetsLibrary的相册资源访问的标准库,后者在iOS 9开始被弃用。当然相对于ALAssetsLibrary其扩展性更高,api使用起来也更加的强大,但这并非今天讨论的重点,这里主要讨论PhotoKit使用的一些技巧和容易踩的坑。PHImageManager or Custom访问相册资源常用的操作还是获取资源,比如获取一张相... 阅读全文

iOS客户端图片智能裁剪

2018-12-12 15:08 by KenshinCui, 1635 阅读, 收藏, 编辑
摘要:概述所谓智能裁剪其实就是按照指定尺寸裁剪或显示出包含图片核心特征的区域,目前很多智能裁剪都是在服务器端做的,在客户端需要访问时直接裁剪放到Redis或者提前裁剪好以备访问。但是找了一圈直接在iOS客户端进行裁剪的库还不多,或者使用成本比较高,不能即拿即用。但是有时候客户端可能并非直接从服务器端获取数据而是读取相册数据,不可能先把图片存放到服务器端裁剪然后再拿来用,考虑到这种场景也不再少数,因此就... 阅读全文

iOS架构设计-URL缓存

2017-06-05 14:37 by KenshinCui, 9462 阅读, 收藏, 编辑
摘要:<img class="desc_img" src="http://images.cnblogs.com/cnblogs_com/kenshincui/271452/o_swift.png">缓存组件应该说是每个客户端程序必备的核心组件,试想对于每个界面的访问都必须重新请求势必降低用户体验。但是如何处理客户端缓存貌似并没有统一的解决方案,多数开发者选择自行创建数据库直接将服务器端请求的JSON(或Model)缓存起来,下次请求则查询数据库检查缓存是否存在;另外还有些开发者会选择以归档文件的方式保存缓存数据,每次请求资源之前检查相应的缓存文件。事实上iOS系统自身就提供了一套缓存机制,本文将结合URL Loading System介绍一下如何利用系统自身缓存设计来实现一套缓存机制,使用这套缓存设计你无需自己编写内存和磁盘存储,无需自行检查缓存过期策略就能轻松实现数据缓存。 阅读全文

iOS刨根问底-深入理解RunLoop

2017-05-08 10:35 by KenshinCui, 35323 阅读, 收藏, 编辑
摘要:<img class="desc_img" src="http://images.cnblogs.com/cnblogs_com/kenshincui/271452/o_swift.png">RunLoop作为iOS中一个基础组件和线程有着千丝万缕的关系,同时也是很多常见技术的幕后功臣。尽管在平时多数开发者很少直接使用RunLoop,但是理解RunLoop可以帮助开发者更好的利用多线程编程模型,同时也可以帮助开发者解答日常开发中的一些疑惑。本文将从RunLoop源码着手,结合RunLoop的实际应用来逐步解开它的神秘面纱。 阅读全文

iOS开发tips-UINavigationBar的切换

2017-05-07 16:09 by KenshinCui, 5997 阅读, 收藏, 编辑
摘要:<img class="desc_img" src="http://images.cnblogs.com/cnblogs_com/kenshincui/271452/o_swift.png">在iOS系统中,如果控制器是以push方式进行管理的话,那么事实上多个控制器是共享的同一个导航栏。当然iOS系统的设计无可厚非,但是国内的应用经常会遇到很多个性的设计,就比如说A push到 B,A可能有导航栏,但是B控制器要求导航栏是透明的,这样一来A和B由于共用同一个导航栏就会让整个切换操作不易管理,何况从iOS 7开始不仅仅是点击返回按钮瞬间返回A那么简单,还要支持通过手势操作从B缓慢返回到A的导航栏渐变效果。本文就简单看一下如何能够更加合理的设计导航栏切换的效果以避免开发中由于导航栏管理不善而造成管理混乱的状况。 阅读全文

iOS开发tips-神奇的UITableView

2017-04-14 14:50 by KenshinCui, 5219 阅读, 收藏, 编辑
摘要:<img class="desc_img" src="http://images.cnblogs.com/cnblogs_com/kenshincui/271452/o_swift.png">UITableView是iOS开发中使用频率最高的UI控件,在前面的[文章](http://www.cnblogs.com/kenshincui/p/3931948.html)中对于UITableView的具体用法有详细的描述,今天主要看一些UITableView开发中的常见一些坑,这些坑或许不深,但是如果开发中注意不到的话往往比较浪费时间。 阅读全文

iOS开发tips-UIScrollView的Autlayout布局

2017-02-25 10:50 by KenshinCui, 2901 阅读, 收藏, 编辑
摘要:<img class="desc_img" src="http://images.cnblogs.com/cnblogs_com/kenshincui/271452/o_swift.png">UIScrollViewj尽管继承于UIView,但它是一个相对比较特殊的视图,特别是当它遇到了AutoLayout之后。在UIScrollView中使用AutoLayout的目的除了使用相对约束确定子控件的位置和大小外,更重要的是如何自动计算出UIScrollView的contentSize(关于使用UIScrollView并且最终手动指定contentSize的AutoLayout用法不再今天讨论之列,严格意义上来说这也不是一种真正的UIScrollView的AutoLayout应用)。 阅读全文