- 博客(37)
- 收藏
- 关注
原创 21.关于使用UICollectionView的一些小技巧
1、在UICollectionView中,有需求要固定headerView。在iOS9之后,可以很简单的设置flowLayout的属性:@property (nonatomic) BOOL sectionHeadersPinToVisibleBounds NS_AVAILABLE_IOS(9_0);@property (nonatomic) BOOL sectionFootersPinT
2016-06-16 16:29:57 3840
转载 7.黑幕背后的Autorelease
黑幕背后的AutoreleaseAutorelease机制是iOS开发者管理对象内存的好伙伴,MRC中,调用[obj autorelease]来延迟内存的释放是一件简单自然的事,ARC下,我们甚至可以完全不知道Autorelease就能管理好内存。而在这背后,objc和编译器都帮我们做了哪些事呢,它们是如何协作来正确管理内存的呢?刨根问底,一起来探究下黑幕背后的Autorelease机制。
2016-04-11 14:47:56 842
原创 20.CALayer动画与UIView动画的疑惑
CALayer动画与UIView动画的使用场合 我本来对于CALayer动画的一些使用场合比较疑惑,可以直接用UIView块动画为什么要费心思写CALayer动画呢?所以首先,我想说一下CALayer动画与UIView动画的使用场合。 1、UIView属于UIKit框架,属于苹果原生框架,而CALayer属于QuartzCore框架,而后者是可以跨平台的,所以当
2016-03-29 21:46:37 1229
转载 6.icon font技术应用
本文转载了应用icon font技术的简单步骤,简单来说就是把图标当成字体来处理,降低设计和开发成本。这里着重记录一下该项应用在iOS7上出现的bug: 当我只生成含有一个图标的字体时,在iOS7上一直显示不出来预期的图标,后来查找了好久没找出原因,最后解决办法是生成含有两个图标以上的字体包含到项目中时显示就正确了,具体是因为什么原因也不得而知,毕竟iOS7已经算过时的了,没
2016-03-15 16:36:09 598
原创 19.原谅我还说iOS7,自定义转场动画与topLayoutGuide在iOS7中的bug
最近在项目中有需求显示一系列Help界面,用以引导用户操作,经过分析我决定用present一个视图控制器的方式来完成,但是系统的present动画又不能满足要求,那怎么办呢? 那自然是自定义转场动画了,关于自定义转场动画的内容,有不懂的可以自行搜索(百度足矣),顺便说一下,如果presented控制器是半透明效果,需要设置modalPresentationStyle。
2016-03-08 21:15:32 860
原创 18.写在二月份的尾巴,UIView animation 的奇怪需求
最近写一个控件由于不能大改原来的代码,所以必须要在一个UIView 的animation block中去更改该控件的frame值,但是这样面临的一个很尴尬的问题就是,无论怎么弄,系统总会自动为该控件frame的更改加上补间动画,可是根据需求是不应该有动画效果的,那么怎么办呢? 试了很多办法之后,发现了一个有效的办法,现在暂时没看出来该办法有什么副作用。方法就是在该animatio
2016-02-29 16:46:25 430
原创 2.求最长无重复字符子串和求最长回文子串的算法
最近算法题目做的不是很多,难度到了medium想快速写出一些完爆其他小伙伴的算法难度太大了,今天就记录两个比较难想和理解的算法题目,说实话,即使现在我只是看代码还是很难理解,但我尝试用自己的话表达出来,看看我的理解怎么样? 首先第一个算法题目是求最长无重复字符子串的问题,LeetCode上原题目是这样: 这个问题忽一看,最容易想到的解法就是,找出字符串中所有
2016-01-20 10:52:10 1315 1
转载 5.Masonry介绍与使用实践:快速上手Autolayout
Masonry介绍与使用实践:快速上手Autolayout2014-12-19 10:31 编辑: suiling 分类:iOS开发 来源:里脊串的开发随笔17 1292201MagicNumber -> autoresizingMask -> autolayout以下是纯手
2016-01-08 13:39:50 669
原创 1.写在2016伊始,总结我的2015
本来打算在2015的最后一天来写这篇日志的,但是由于当天的各种活动给耽搁了,所以一下拖到了现在。不过现在也好,我可以好好回顾一下我的2015,不必因为时间节点而潦草完成。 虽然这是我的技术博客,但我觉得如果纯粹是技术文章未免少了点人情味,所以想在这里写一写我的生活感悟,好吧,实际原因是因为关注我的博客的人少,也很少有人认识,我可以写一写自己的心声,因为我不太喜欢把自己的各种感情暴
2016-01-05 09:47:49 814
原创 17.iOS中继承了拥有delegate属性控件的问题
在iOS中,我们很多情况下都需要自定义控件,而自定义控件我们通常都是先继承自系统控件,然后进行一系列扩充,但我发现当我继承了本身拥有delegate属性的控件时,想要在自定义控件类内部拿到delegate方法出现了问题,下面我以UIScrollView为例进行说明:1、第一个想法是直接在重写父类的初始化方法时设置self.delegate = self,这样虽然可以在类内部直接调用代理方法,但
2015-12-25 10:01:16 2566
转载 4.iOS多线程中,GCD技术的队列与执行方式的组合结果
iOS多线程中,队列和执行的排列组合结果分析本文是对以往学习的多线程中知识点的一个整理。多线程中的队列有:串行队列,并发队列,全局队列,主队列。执行的方法有:同步执行和异步执行。那么两两一组合会有哪些注意事项呢?如果不是在董铂然博客园看到这边文章请 点击查看原文提到多线程,也就是四种,pthread,NSthread,GCD,NSOperation 其中p
2015-12-14 16:56:51 1042
原创 1.开始在leetCode中刷题的一些感受
最近项目上没有什么事情,鉴于自己的基础比较差,正好最近也开始学习了Python,就想在leetCode中使用Python语言刷刷题,加强一下自己的算法的能力,下面就来谈谈最近刷题的一些感受:1、刚开始刷题的时候,基本上一下午只能A过两三道easy的算法题,但是我在每次A过之后,都会在讨论里看看别人的算法,把自己觉得叼炸天的算法记录下来,尝试理解别人的算法。这种做法给我带来的最大好处是:知道了很
2015-11-27 17:06:09 11468 3
原创 16.说一说iOS中与属性成员相关的坑
之前在做项目的时候遇到的属性相关的一些坑,当时不求甚解,只要改好就ok,今天忽然看到了曾经遇到的坑的解释,就在这里做一个总结:1.同时重写属性的get和set方法 在.m中同时重写get和set方法后,总是报错,类似这个样子: 后来我通过加上@synthesize array = _array, 当时并不知道为什么会这样,但今天看了下面这个面试题的回
2015-11-06 15:36:43 653
原创 6.Swift初探-枚举、类和结构体
swift中的枚举可以设置关联值和原始值,关联值用于实例化的时候赋值,原始值用于预设枚举成员关联值(Associated Values)上一小节的例子演示了如何定义和分类枚举的成员。你可以为Planet.Earth设置一个常量或者变量,并在赋值之后查看这个值。然而,有时候能够把其他类型的关联值和成员值一起存储起来会很有用。这能让你连同成员值一起存储额外的自定义信息,并且你每次在
2015-11-04 10:25:00 665
原创 5.Swift初探-函数输入输出参数语法,控制流语法的一些新概念
1.输入输出参数(In-Out Parameters)变量参数,正如上面所述,仅仅能在函数体内被更改。如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输入输出参数(In-Out Parameters)。定义一个输入输出参数时,在参数定义前加 inout 关键字。一个输入输出参数有传入函数的值,这个值被函数修改,然后被传出函数
2015-11-02 13:56:50 655
转载 3.Swift的Guard语句
Swift的Guard语句字数1271 阅读908 评论1 喜欢5本篇文章翻译自:http://ericcerney.com/swift-guard-statement/原作者:ecerney原文章发布于2015-06-10*译者注:该语法为swift2.0新特性,目前(2015-07-30)仅xcode 7 beta支持,xcode6并不支持。最开
2015-11-02 10:58:30 850
转载 2.整理 iOS 9 适配中出现的坑(图文)
整理 iOS 9 适配中出现的坑(图文)2015-10-16 09:07 编辑: suiling 分类:iOS开发 来源:董铂然的博客2 12009iOS 9适配招聘信息:【新浪微博】手机客户端iOS研发工程师 20k-40kiOS 开发工程师iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销)交互设计师(
2015-10-30 17:27:32 594
原创 15.Xcode7中使用UIWebView时加载不出网页的问题
在Xcode7中,苹果禁用了所有明文的http传输,所以直接用http的URL通过UIWebView 或者 WKWebView加载网页会加载不出来,所以我们要进行一下小设置:直接在info.plist中添加以下东东: NSAppTransportSecurity NSAllowsArbitraryLoads 修改后为:
2015-10-30 16:48:16 2300
原创 4.Swift初探-2048小游戏中的问题
最近工作不是很忙,就继续学习swift,想着干学习语法提高太慢,就试着用swift写了一个2048小游戏,中间遇见的一些问题在这里记录一下:1、自定义类 首先自定义类就花费了很大的力气,主要是因为swift自定义类时严格控制了初始化,我想自定义一个继承自UIView的类,首先必须写这个函数:required init?(coder aDecoder: NSCoder)
2015-10-23 18:58:00 803
原创 3.Swift初探-基本语法
1.隐式解析可选类型如上所述,可选类型暗示了常量或者变量可以“没有值”。可选可以通过if语句来判断是否有值,如果有值的话可以通过可选绑定来解析值。有时候在程序架构中,第一次被赋值之后,可以确定一个可选类型_总会_有值。在这种情况下,每次都要判断和解析可选值是非常低效的,因为可以确定它总会有值。这种类型的可选状态被定义为隐式解析可选类型(implicitly unwrappe
2015-10-15 16:39:56 414
原创 2.Swift初探-基本语法
1.if 表达式var optionalString: String? = "Hello"print(optionalString == nil)var optionalName: String? = "John Appleseed"var greeting = "Hello!"if let name = optionalName { greeting = "Hello,
2015-09-30 10:38:03 476
原创 14.如何给分类添加数据成员
oc中分类作为类扩展的一种方式,可以允许在不知道和不改动原有类的基础上为该类扩充一些方法,但是分类本身是不允许扩充数据成员的。那么如何给分类扩充数据成员呢?这里利用runtime运行时的objc_方法,就可以分类动态的扩充成员变量。1.首先包含头文件:#import 2.在类声明中添加要扩充的属性:@interface NSDictionary (extension)@
2015-09-22 20:14:28 1233
原创 13.GPUImage初探以及人脸检测
1.GPUImage GPUImage是一个很强大的图形图像渲染库,可以通过各种滤镜渲染出很多牛逼的效果,并且不消耗CPU,因为它用的是GPU进行的。最近接触了它的关于相机方面的功能,导入GPUImage库后,可以用很简单的代码写出一个小的相机应用,主要用到 GPUImageVedioCamera 和继承自它的GPUImageStillCamera下面用代码分析:
2015-09-11 16:55:53 4897
原创 12.iOS格式化日志输出的方法以及在发布状态自动关闭NSLog方法
1.自定义类的格式化日志输出 当我们自定义一个类,需要打印该类对应的对象信息时,往往只能打印出他们的内存,如果我们想打印出我们想看到的一些数据成员就必须要一一打印,这样往往比较麻烦。所以我们需要格式化日志输出,使得NSLog出我们需要的信息: 方法是在该类实现文件中重写description 方法,在该方法的返回值中格式化要打印的内容即可。-(
2015-09-07 11:05:04 1227
原创 11.Xcode中实时监测网络状态
当我们开发一个网络应用程序时,我们需要实时监测网络状态,以展现不同的的内容。那么该如何实现呢?1.首先要监测网络状态,我们得包含一个苹果提供的文件Reachability.m以及.h。2.当我们的网络状态改变时,系统会发送通知,所以我们只需要监听该通知即可:[[NSNotificationCenter defaultCenter] addObserver:self selector:@
2015-09-06 14:28:03 2903
原创 10.在Xcode中如何以非ARC编译某一个文件
在xcode中,当我们导入以前写的一些代码时,那些代码还用的是非ARC,此时在编译时会报错,如何解决这个问题呢?下面一张图即可说明: 设置好后按回车键即可,这样该文件就以非ARC编译了。
2015-09-06 14:06:24 492
原创 9.在项目中利用block替换代理方法,实现通知
利用代理方法的缺点: 通常我们在自定义工具类或视图类中进行一些操作之后需要通知视图控制器,我们都会通过代理来实现。一般实现方法是先定义协议,然后声明代理属性,然后在对应方法中调用代理对象的该方法。然后到视图控制器中,声明遵守协议 ,设置该类对应的对象的代理为视图控制器,然后实现对应协议中代理方法。这样就能完成通知视图控制器。但是这样做步骤太多,比较麻烦。接下来介绍一个利
2015-09-01 16:41:44 1239
转载 1.iOS开发几款常用小工具
1、Simpholdershttp://simpholders.comSimPholders可让你快速直接地访问iPhone模拟器应用的app文档。你可以通过SimPholders找到数据库文件、永久存储以及缓存。说白了,就是你不用去找app文件夹了,直接点击界面,他就会把那个文件夹直接给你打开!2、PaintCodehttp://www.paintcode
2015-09-01 11:13:35 480
原创 8.block中使用self的循环引用问题
在视图控制器中的一段block中使用self时,例如赋给delegate等,这种情况会造成循环引用,这样该视图控制器无法得到释放
2015-08-31 16:13:48 444
原创 7.Builder Pattern的学习和使用
1.面临的问题: 我们通常在初始化一个对象时,需要给该对象的一些属性进行赋值,比如下面这个类:typedef enum{ sexTypeMale, sexTypeFamle} sexType;@interface CYLPerson : NSObject@property (nonatomic, strong) NSString *name;@pr
2015-08-31 09:41:34 729
原创 6.UICollectionViewController和UITableViewController之间的异同
最近在项目中会用到UICollectionViewController,所以将它与常用的UICollectionViewController做一个对比: 两者在使用上大致相同,在初始化之后,都会设置相应的数据源和代理,通过重写相应的数据源和代理方法来进行具体操作,现在着重说一下它们的一些小不同:1.初始化 UITableViewController在初
2015-08-26 20:14:11 728
原创 4.iOS中crash(崩溃)日志相关
如何获取crash日志? 当一个iOS应用程序崩溃时,系统会创建一份crash日志保存在设备上。这份crash日志记录着应用程序崩溃时的信息,通常包含着每个执行线程的栈调用信息(低内存闪退日志例外),对于开发人员定位问题很有帮助。 对于测试阶段,有以下几种方法可以获取到crash日志 1. 首先连接设备,打开Xcode - Window - O
2015-08-24 14:06:39 627
原创 3.一些小tips
1.当启动的图片缺少一个空的时候,可以点击已有的图片,show in Finder ,然后更改对应的jason文件就可以了 2.ios7以后,状态栏默认交给控制器去管理。-(BOOL)prefersStatusBarHidden{ return YES;}如果要设置启动的时候隐藏状态栏的话:勾上图上的勾就可以实现,然
2015-08-20 16:26:49 517
原创 2.动画相关
layer的属性 每一个视图能显示出来,都是因为有layer存在。该对象有两个比较重要的属性:position和anchorPoint,第一个属性代表该视图相对于父控件的位置,第二个属性表示该视图上的哪个点会移动到对应的位置,它的取值范围是0到1.默认是0.5即视图中心。自定义layer的方法在创建的继承自CALayer的类里重写- (void)drawInContext
2015-08-20 09:41:23 348
原创 1.Swift初探
一、swift简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,右上角的图标就是它的LOGO二、swift特性 swift的playground可以进行实时编译三、 swift语法1.常量和变量定义
2015-08-19 15:40:55 338
原创 1.画图相关
1.启用定时器,做一个简易刷帧动画 [NSTimerscheduledTimerWithTimeInterval:0.1target:selfselector:@selector(upDate)userInfo:nilrepeats:YES];2.屏幕刷帧,一般用下面这个方法 CADisplayLink *display = [CADispla
2015-08-18 17:37:23 316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人