自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 swift脚本编程:一键生成AppIcon

事前准备查看swift版本swift脚本编程小知识终端输入和输出输出输入在swift脚本中调用其他脚本开始编写脚本读取inputpng生成AppIconappiconset和Contentsjson生成不同尺寸的image 自从Xcode8之后就不支持插件了,没法用Xcode一键生成AppIcon,一直没找到好的解决方案,一怒之下决定自己写一个脚本用来生成AppIcon,下面是

2017-10-17 00:06:36 2558 1

原创 丁香园iOS电话面试问题总结

简单讲解一下http请求以及GET POST的区别https的加密方式和几次握手https的加密方式加密的详细过程在不知道二进制文件格式的情况下如何区分文件常见的几种线程锁怎么保证线程安全SDWebImage具体实现和具体类Alamofire实现原理和主要的类RxSwift的原理使用和主要类realm的简单介绍和使用时的线程问题跨线程时的使用简单讲一讲RunTime和RunL

2017-06-21 01:35:24 229994 5

原创 iOS动画进阶 - 实现炫酷的上拉刷新动效(二)

最近撸了一个上拉刷新的小轮子,只要遵循一个协议就能自定义自己动效的上拉刷新和加载,我自己也写了几个动效进去,下面是一个比较好的动效的实现过程先上效果图和github地址,完整代码个demo和进入查看,有其他好的动效大家也可以学习交流~分析动效写一个动效的第一步就应该仔细的去分析它,把它的每一帧展开来看,找一个最合适的方式来实现它,我们可以把以上动画分解成以下三个步骤:箭头的绘制和动效圆环的绘制

2017-04-27 20:41:17 4584 5

原创 iOS动画进阶 - 实现炫酷的上拉刷新动效

移动端访问不佳,请访问我的个人博客 最近撸了一个上拉刷新的小轮子,只要遵循一个协议就能自定义自己动效的上拉刷新和加载,我自己也写了几个动效进去,下面是一个比较好的动效的实现过程先上效果图和github地址,有其他好的动效大家也可以交流~动效的原地址,在uimovement网站上看到这个动效时感觉特别6,就想自己实现一下,费了很长时间,换了几种方案终于实现出来了,下面是实现的步骤:分析动效写一个

2017-03-17 15:04:34 7354 1

原创 swift设计模式学习 - 外观模式

移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流外观模式外观模式(Facade),为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。外观模式的基本实现上图是外观模式的UML图,下面是基本的代码实现过程://MARK: 外观类class Facade { let one = SubSystemOne()

2017-03-09 12:05:25 2185

原创 swift设计模式学习 - 模板方法模式

移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流模板方法模式模板方法模式,定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式的基本实现上图是基本模板模式的UML图,这种设计模式在很多地方都有用到,下面是基本实现的代码:class AbstractClass { func

2017-02-24 13:59:34 2089

原创 swift设计模式学习 - 代理模式

移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流代理模式代理模式为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。代理模式的组成抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现

2017-02-21 23:47:22 1814 2

原创 swift设计模式学习 - 原型模式

移动端访问不佳,请访问我的个人博客 设计模式学习的demo地址,欢迎大家学习交流原型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。定义用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给

2017-02-20 19:56:55 2716

原创 swift设计模式学习 - 策略模式

策略模式策略模式定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式的组成抽象策略角色(Strategy): 策略类,通常由一个接口或者抽象类实现。具体策略角色(ConcreteStrategy):包装了相关的算法和行为。环境角色(Context):持有一个策略类的引用,最终给客户端调用。策略模式的基本实现上图是最基本的装饰模式的结构图

2017-02-18 22:03:58 2817

原创 iOS动画进阶 - 手摸手教你写ShineButton动画

前段时间在github上看见一个非常nice的动画效果,可惜是安卓的,想着用swift写一个iOS版的,下下来源代码研究了一下,下面是我写代码的心路历程先上图和demo的地址分析动画过程刚开始看的时候感觉这个动画很炫酷,实现起来应该挺复制的,后来我将gif图逐一分解,大致浏览了一下安卓的实现过程,大致了解的实现的过程,下面是一些关键的动画步骤:第一步是里面图片的缩放动画,使用CALayer配合C

2017-02-16 00:32:35 7609 10

原创 swift设计模式学习 - 装饰模式

移动端访问不佳,请访问我的个人博客装饰模式在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点装饰对象和真实对象有相同的接口。这样客户端对象就能以和真实对象相同的方式和装饰对象交互。装饰对象包含一个真实对象的引用(reference)装饰对象接受所有来自客户端的请求。它把这些请求转发给真实的对象。装饰对象可以在转

2017-02-09 17:46:04 2154 1

原创 iOS开发进阶 - 基于PhotoKit的图片选择器

移动端访问不佳,请访问我的个人博客 很早之前就用OC把代码写完了并用在项目中了,一直没时间整理,现在用swift重写一份,并且更加详细的来了解这个Photos框架,下面是我集合苹果官方文档和其他大神的博客写出的一篇关于Photos框架的介绍老规矩先上效果图和Demo地址:了解Photos框架Photos是ios8出的一个新的图片选择框架,取代之前的AssetsLibrary框架,相比较Asse

2017-01-11 15:21:34 6021 2

原创 swift学习笔记 - Range、ClosedRange、CountableClosedRange与CountableRange学习

在使用swift的过程中字符串操作的时候会用到Range,刚开始使用起来各种别扭,然后发现居然还有ClosedRange、CountableClosedRange和CountableRange,这下就彻底头疼了,下面简单的描述一下它们的区别从命名来代码来理解和区分CountableClosedRange:可数的闭区间CountableRange:可数的开区间ClosedRange:不可数的闭

2017-01-05 22:21:12 4361

原创 iOS开发进阶 - 自定义UICollectionViewLayout实现瀑布流布局

最近项目中需要用到瀑布流的效果,但是用UICollectionViewFlowLayout又达不到效果,自己动手写了一个瀑布流的layout,下面是我的心路路程先先上效果图与demo地址:因为是用UICollectionView来实现瀑布流的,决定继承UICollectionViewLayout来自定义一个layout来实现一个简单瀑布流的布局,下面是需要重写的方法:重写这个属性得出UIColl

2016-12-21 22:57:50 7296 1

原创 iOS开发进阶 - 富文本正则替换表情

移动端访问不佳,请访问我的个人博客 最近写项目需要用到富文本解析字符串显示表情,下面是我使用正则替换实现富文本的方式,希望能帮助到大家先上效果图和demo地址实现过程中需要用到的知识点NSRegularExpression(正则表达式)NSMutableAttributedString(用来显示富文本的string)废话不多说,直接贴代码:import UIKitstruct WCLEm

2016-11-28 17:20:11 3570

原创 iOS开发进阶 - 项目的本地化处理(多语言开发)

最近项目本地化,需要支持11国语言,下面将本地化的步骤记录下来,方便查找使用,步骤很简单,有些地方也有坑,希望大家看后少走弯路~~什么是本地化本地化说直白点就是多语言开发,通过系统语言来判断应用使用的哪种语言,实现应用的本地化开发本地化处理需要处理的文件本地化应用程序的info.plist本地化字符串处理(项目中所涉及的字符串)本地化图片XIB和storyboard的本地化处理其他文件,

2016-11-21 13:33:15 2535

原创 Shell学习小结 - 深入认识变量

变量的命名对于初学者来说,可以简单的理解为,变量就是保存在计算机内存中的一系列的键值对。列如:str="hello"这里的str就是变量名,而hello就是变量的值 注意在shell中变量名的大小是敏感的,因此大小写不同的两个变量名并不代表同一个变量变量的类型根据变量的类型确实,可以将程序设计语言分为两类,分别是静态类型语言和动态类型语言静态类型语言: 是在编译期间就确定变量类型的语言,例如

2016-10-23 23:00:48 1225

原创 iOS开发进阶 - 使用Carthage管理iOS第三方库

最近在研究Swift,一不小心发现一个好的的管理iOS第三方库Carthage,就跟第一次使用CocoaPods时一样兴奋不已,在研究了大半天后终于能用了,使用起来还是很方便的,比起CocoaPods有不足也有优点,两个配合起来用也是很爽的^ - ^初识Carthage最近在用Swift3.0做项目,想导入一些支持Swift3.0的第三方库来使用,就想到Alamofire,看README时发现了一

2016-09-20 22:54:53 4189

原创 iOS基于XMPP实现即时通讯之一、环境的搭建

移动端访问不佳,请访问我的个人博客 使用XMPP已经有一段时间了,但是一直都没深入研究过,只是使用SDK做一些简单的操作,看了许多大神的博客,自己总结一下,准备写一系列关于XMPP的使用博客,以便于自己更加深入学习~IM协议及服务器选型http://liudanking.me/arch/xmpp%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%80%89%E5%9E%8B/ 协议

2016-09-16 19:57:17 6461 3

原创 iOS动画进阶 - 手摸手教你写 Slack 的 Loading 动画

如果移动端访问不佳,可以访问我的个人博客 前几天看了一篇关于动画的博客叫手摸手教你写 Slack 的 Loading 动画,看着挺炫,但是是安卓版的,寻思的着仿造着写一篇iOS版的,下面是我写这个动画的分解~老规矩先上图和demo地址:刚看到这个动画的时候,脑海里出现了两个方案,一种是通过drawRect画出来,然后配合CADisplayLink不停的绘制线的样式;第二种是通过CAShapeL

2016-09-08 18:19:01 6592 7

原创 iOS开发进阶 - 日志输出框架CocoaLumberjack与XcodeColors插件的简单使用(swift版)

CocoaLumberjack是Mac和iOS上一个集快捷、简单、强大和灵活于一身的日志框架。XcodeColors是用于控制台着色的工具,配合着CocoaLumberjack用有更好的效果,不废话,先上图:从上图上看控制台的日志输出不仅仅只有默认的黑色了,而是根据日志等级的不同带有不同的颜色,这样即让我们的编程变的步那么无聊,又让我们能更加清晰的对日志等级做出区分,下面来详细介绍一下应该如何应用

2016-09-01 22:46:16 3806

原创 iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上

如果移动端访问不佳,可以访问我的个人博客 用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法相关资料和下载首先是打包脚本的下载地址,这个是我找到的比较全的一个,里面有很多不同功能的shell脚本,亲测好用,传送门还有关于fir指令的一些介绍可以去这

2016-08-24 12:03:01 11453 10

原创 iOS动画进阶 - 实现类似美颜相机的相机启动动画

最近在写一个相册的demo,偶尔看到了美拍的相机过载动画觉得很有意思,就想在我的相册demo中加入一个这种特效,下面把我的想法和实现过程给大家分享一下先上效果图:(demo地址)步骤分析这个动效看起来很有特色但是实现起来是非常简单的,只需要用到CALayer和CAShapeLayer做为展示层,然后通过CABasicAnimation实现动画就行了~用两个CALayer来呈现启动的image通

2016-08-16 15:58:46 3616

原创 GCD深入学习之GCD的初识

如果移动端访问不佳,可以访问我的个人博客 现在网上关于GCD的介绍已经很多了,在项目中也经常用到,但是没怎么深入研究过,打算写一系列关于GCD使用,参考其他大神写的博客和Apple的技术文档总结一下,一是自己深入学习一下,二是以后忘了可以回过头来温习一下~什么是GCD?GCD全名是Grand Central Dispatch(大中央调度器),是系统级的,存在于libdispatch.dylib

2016-06-30 11:01:50 6689

原创 iOS动画进阶 - CAKeyframeAnimation实现过山车动画

偶然间在网页上看到一个过山车动画觉得很炫,就想用swift纯代码实现了一个类似的效果,因为没有设计天赋,所以就完全高仿的人家的效果-.-下面上效果图:给大家介绍一下项目中主要会用到的类:CAShapeLayerCAGradientLayerCAKeyframeAnimation实现的主要思路渐变的背景用CAGradientLayer实现,其他例如山峰,草坪和轨道可以用CAShapeLaye

2016-06-22 22:34:59 7082

原创 iOS开发进阶 - 实现类似微信和支付宝的密码输入框(UIKeyInput协议)

如果移动端访问不佳,请访问我的个人博客目前在项目中需要实现发红包的功能,自己就写了一个密码输入框的控件,主要用到了UIKeyInput协议和CoreGraphics框架,效果类似微信支付,感觉还行就把我的思路和制作过程写下来给大家分享一下。(demo地址觉得有用的可以star一下)让你的自定义View具备输入的功能(UIKeyInput协议)通过UIKeyInput协议可以为响应者提供简单的键盘输

2016-06-02 14:10:26 12004 4

原创 iOS开发进阶 - 用AVFoundation自定义视频录制功能

系统自带的录制视频的功能显然无法项目的要求,自定义视频录制就非常重要了,那么下面来带大家制作属于自己的视频录制界面。主要使用AVFoundation和CoreMedia框架..

2016-05-25 14:13:18 29599 71

原创 iOS开发进阶 - CAEmitterLayer,粒子发射系统

CAEmitterLayer是ios5中苹果引入了一个新的CALayer子类。CAEmitterLayer是一个高性能的粒子引擎,可以用来做一些绚丽的粒子系统,比如爆炸,雪花火焰等等。基于CAEmitterLayer做的点赞效果图(demo的github下载地址(大家喜欢可以点个star)): CAEmitterCellCAEmitterCell: CAEmitterCell是粒子发射系统里的粒子

2016-04-27 00:45:45 5786 1

原创 iOS开发进阶 - 常用的Xcode插件

Alcatraz - 插件管理工具Alcatraz是一个开源的Xcode插件管理器,可以让你更便捷地发现、安装以及管理插件、模板和配色方案。只需要简单地点击或者勾选,就能下载安装和删除插件,建议选择的第一个Xcode插件。 下载完成后通过Window—>Package Manager来打开。 XcodeColors - 控制台着色的工具控制台着色的工具XcodeColors,使用了XcodeCo

2016-03-25 23:39:40 2641 1

原创 手把手教你发布自己的开源框架到CocoaPods

移动端显示不佳,请访问我的个人博客 偶尔会发布自己的开源框架到CocoaPods上,但是每次都忘记命令行,写这篇博客的目的是为了记录下来步骤,方便以后翻阅使用一、先将代码传到github上这步比较简单,大致说一下:// 创建本地仓库git init// 添加名称为origin的远程连接git remote add origin '你的github项目地址'// 将本地代码加入本地仓库里

2017-03-17 00:21:47 2200 2

原创 reason: image not found的解决方案

在制作framework时遇到真机运行时导致的reason: image not found允许崩溃的问题,下面是我的解决方案:首先我们分析一下出现这种情况的原因,原因就是framework找不到镜像了,也就是在真机运行是没有找到对应的framework包,在网上找的一些办法将框架引用从Required 变为Optional ,根本就是治标不治本,等到运行到这个framework的代码是也会崩溃,

2017-02-16 14:39:38 25880 3

原创 swift学习笔记 - 判断当前运行的系统和平台

最近代码需要判断代码运行的系统与平台,下面总结了一下swift下一些可以用来判断的属性:// 代码运行在32位的 Windowspublic var TARGET_OS_MAC: Int32 { get }// 代码运行在 Mac OS Xpublic var TARGET_OS_WIN32: Int32 { get }// 代码运行在某些 Unix(不是OSX)public var T

2016-12-27 23:11:27 4471

原创 swift学习笔记 - swift3.0用GCD实现计时器

swift3.0之后,GCD的语法发生了翻天覆地的变化,从过去的c语法变成了点语法,下面是变化之后用GCD实现计时器的方法:先贴代码:// 定义需要计时的时间var timeCount = 60// 在global线程里创建一个时间源let codeTimer = DispatchSource.makeTimerSource(queue: DispatchQueue.global(

2016-12-26 11:01:56 9334

原创 fatal: refusing to merge unrelated histories的解决方案

最近更新了git版本,发现在github上建立了一个仓库,然后关联本地库的时候pull失败,错误为fatal: refusing to merge unrelated histories,查找后发现解决方案为下:解决方案:# 将之前的git pull origin master修改为一下代码git pull origin master --allow-unrelated-histories

2016-12-09 15:52:14 3237

转载 iOS日常学习 - 如何配置.gitignore文件

文章为转载学习,原文地址为什么要配置.gitigore在我们使用git的过程当中,不是任何文件都需要commit到本地或者远程仓库的,比如一些三方库文件。 那么作为一个git新手,很多人不知道如何配置.gitignore文件,本文只是提供一个便捷的例子。你可以直接使用本文提供的代码编辑到你的.gitigore文件中。简便配置直接复制下面的内容到你的.gitignore文件即可。注意,这个配置是给

2016-11-21 15:29:38 2333 1

原创 Xcode8编辑代码崩溃解决办法

更新了Xcode8带来了一系列问题,最大的困扰就是不支持插件了,而且最关键的是一敲代码就崩溃(就是写一个字母就开始崩),在网上找了很多解决,发现是之前装的插件遗留下来的问题,将插件全部删掉就解决了,下面是删除插件的办法:打开终端输入:defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-8.0然后点skip

2016-11-18 13:53:19 2097

原创 Swift学习笔记 - URL编码encode与解码decode

使用swift有一段时间了,api的变换造成了很多困扰,下面是关于url编码和解码问题的解决方案在Swift中URL编码encode在Swift中URL编码用到的是String的方法func addingPercentEncoding(withAllowedCharacters allowedCharacters: CharacterSet) -> String?用法:let str = {url

2016-11-05 12:20:43 21081 7

原创 Swift学习笔记 - Swift属性只读

在OC中我们经常用到只读属性,用readonly修饰一下就行了,但在Swift中已经不是这样修饰的了,下面记录一下Swift中只读属性的使用在OC中的只读://只读属性@property(readonly, nonatomic) NSObject *wcl;在Swift中的只读://只读属性private(set) var wcl

2016-10-30 19:51:47 4743

转载 iOS日常学习 - 每个Xcode开发者应该知道的七个使用技巧

本文为转载学习使用原文链接 工欲善其事,必先利其器。对一个iOS开发者来说,这就意味着对Xcode的熟练掌握程度。Xcode是一个学习起来有点难度的软件,下面的这些技巧或许可以显著的提高你的编程效率。1.快速打开快速打开(Open Quickly)命令在Xcode的File菜单中,当然,用快捷键Command+Shift+O会更方便一些。这个命令可以开启一个小窗格用来快速搜索浏览文件、类、算法

2016-10-16 12:29:26 854

原创 Swift学习笔记 - OC中关于NSClassFromString获取不到Swift类的解决方案

在OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案:问题的发现过程UIViewController *destinationVC = [[NSClassFromString(demoInfoModel.demoVCName) alloc] init]; [self.navigation

2016-10-15 21:35:15 4631

空空如也

空空如也

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

TA关注的人

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