iOS学习笔记
文章平均质量分 71
_畅雨潇潇_
即使身在沟壑,也不要忘记仰望星空。
展开
-
1.画图相关
1.启用定时器,做一个简易刷帧动画 [NSTimerscheduledTimerWithTimeInterval:0.1target:selfselector:@selector(upDate)userInfo:nilrepeats:YES];2.屏幕刷帧,一般用下面这个方法 CADisplayLink *display = [CADispla原创 2015-08-18 17:37:23 · 309 阅读 · 0 评论 -
12.iOS格式化日志输出的方法以及在发布状态自动关闭NSLog方法
1.自定义类的格式化日志输出 当我们自定义一个类,需要打印该类对应的对象信息时,往往只能打印出他们的内存,如果我们想打印出我们想看到的一些数据成员就必须要一一打印,这样往往比较麻烦。所以我们需要格式化日志输出,使得NSLog出我们需要的信息: 方法是在该类实现文件中重写description 方法,在该方法的返回值中格式化要打印的内容即可。-(原创 2015-09-07 11:05:04 · 1215 阅读 · 0 评论 -
15.Xcode7中使用UIWebView时加载不出网页的问题
在Xcode7中,苹果禁用了所有明文的http传输,所以直接用http的URL通过UIWebView 或者 WKWebView加载网页会加载不出来,所以我们要进行一下小设置:直接在info.plist中添加以下东东: NSAppTransportSecurity NSAllowsArbitraryLoads 修改后为:原创 2015-10-30 16:48:16 · 2284 阅读 · 0 评论 -
17.iOS中继承了拥有delegate属性控件的问题
在iOS中,我们很多情况下都需要自定义控件,而自定义控件我们通常都是先继承自系统控件,然后进行一系列扩充,但我发现当我继承了本身拥有delegate属性的控件时,想要在自定义控件类内部拿到delegate方法出现了问题,下面我以UIScrollView为例进行说明:1、第一个想法是直接在重写父类的初始化方法时设置self.delegate = self,这样虽然可以在类内部直接调用代理方法,但原创 2015-12-25 10:01:16 · 2554 阅读 · 0 评论 -
14.如何给分类添加数据成员
oc中分类作为类扩展的一种方式,可以允许在不知道和不改动原有类的基础上为该类扩充一些方法,但是分类本身是不允许扩充数据成员的。那么如何给分类扩充数据成员呢?这里利用runtime运行时的objc_方法,就可以分类动态的扩充成员变量。1.首先包含头文件:#import 2.在类声明中添加要扩充的属性:@interface NSDictionary (extension)@原创 2015-09-22 20:14:28 · 1223 阅读 · 0 评论 -
20.CALayer动画与UIView动画的疑惑
CALayer动画与UIView动画的使用场合 我本来对于CALayer动画的一些使用场合比较疑惑,可以直接用UIView块动画为什么要费心思写CALayer动画呢?所以首先,我想说一下CALayer动画与UIView动画的使用场合。 1、UIView属于UIKit框架,属于苹果原生框架,而CALayer属于QuartzCore框架,而后者是可以跨平台的,所以当原创 2016-03-29 21:46:37 · 1211 阅读 · 0 评论 -
19.原谅我还说iOS7,自定义转场动画与topLayoutGuide在iOS7中的bug
最近在项目中有需求显示一系列Help界面,用以引导用户操作,经过分析我决定用present一个视图控制器的方式来完成,但是系统的present动画又不能满足要求,那怎么办呢? 那自然是自定义转场动画了,关于自定义转场动画的内容,有不懂的可以自行搜索(百度足矣),顺便说一下,如果presented控制器是半透明效果,需要设置modalPresentationStyle。原创 2016-03-08 21:15:32 · 850 阅读 · 0 评论 -
9.在项目中利用block替换代理方法,实现通知
利用代理方法的缺点: 通常我们在自定义工具类或视图类中进行一些操作之后需要通知视图控制器,我们都会通过代理来实现。一般实现方法是先定义协议,然后声明代理属性,然后在对应方法中调用代理对象的该方法。然后到视图控制器中,声明遵守协议 ,设置该类对应的对象的代理为视图控制器,然后实现对应协议中代理方法。这样就能完成通知视图控制器。但是这样做步骤太多,比较麻烦。接下来介绍一个利原创 2015-09-01 16:41:44 · 1235 阅读 · 0 评论 -
3.一些小tips
1.当启动的图片缺少一个空的时候,可以点击已有的图片,show in Finder ,然后更改对应的jason文件就可以了 2.ios7以后,状态栏默认交给控制器去管理。-(BOOL)prefersStatusBarHidden{ return YES;}如果要设置启动的时候隐藏状态栏的话:勾上图上的勾就可以实现,然原创 2015-08-20 16:26:49 · 506 阅读 · 0 评论 -
18.写在二月份的尾巴,UIView animation 的奇怪需求
最近写一个控件由于不能大改原来的代码,所以必须要在一个UIView 的animation block中去更改该控件的frame值,但是这样面临的一个很尴尬的问题就是,无论怎么弄,系统总会自动为该控件frame的更改加上补间动画,可是根据需求是不应该有动画效果的,那么怎么办呢? 试了很多办法之后,发现了一个有效的办法,现在暂时没看出来该办法有什么副作用。方法就是在该animatio原创 2016-02-29 16:46:25 · 423 阅读 · 0 评论 -
4.iOS中crash(崩溃)日志相关
如何获取crash日志? 当一个iOS应用程序崩溃时,系统会创建一份crash日志保存在设备上。这份crash日志记录着应用程序崩溃时的信息,通常包含着每个执行线程的栈调用信息(低内存闪退日志例外),对于开发人员定位问题很有帮助。 对于测试阶段,有以下几种方法可以获取到crash日志 1. 首先连接设备,打开Xcode - Window - O原创 2015-08-24 14:06:39 · 620 阅读 · 0 评论 -
16.说一说iOS中与属性成员相关的坑
之前在做项目的时候遇到的属性相关的一些坑,当时不求甚解,只要改好就ok,今天忽然看到了曾经遇到的坑的解释,就在这里做一个总结:1.同时重写属性的get和set方法 在.m中同时重写get和set方法后,总是报错,类似这个样子: 后来我通过加上@synthesize array = _array, 当时并不知道为什么会这样,但今天看了下面这个面试题的回原创 2015-11-06 15:36:43 · 640 阅读 · 0 评论 -
8.block中使用self的循环引用问题
在视图控制器中的一段block中使用self时,例如赋给delegate等,这种情况会造成循环引用,这样该视图控制器无法得到释放原创 2015-08-31 16:13:48 · 434 阅读 · 0 评论 -
2.动画相关
layer的属性 每一个视图能显示出来,都是因为有layer存在。该对象有两个比较重要的属性:position和anchorPoint,第一个属性代表该视图相对于父控件的位置,第二个属性表示该视图上的哪个点会移动到对应的位置,它的取值范围是0到1.默认是0.5即视图中心。自定义layer的方法在创建的继承自CALayer的类里重写- (void)drawInContext原创 2015-08-20 09:41:23 · 340 阅读 · 0 评论 -
6.UICollectionViewController和UITableViewController之间的异同
最近在项目中会用到UICollectionViewController,所以将它与常用的UICollectionViewController做一个对比: 两者在使用上大致相同,在初始化之后,都会设置相应的数据源和代理,通过重写相应的数据源和代理方法来进行具体操作,现在着重说一下它们的一些小不同:1.初始化 UITableViewController在初原创 2015-08-26 20:14:11 · 721 阅读 · 0 评论 -
13.GPUImage初探以及人脸检测
1.GPUImage GPUImage是一个很强大的图形图像渲染库,可以通过各种滤镜渲染出很多牛逼的效果,并且不消耗CPU,因为它用的是GPU进行的。最近接触了它的关于相机方面的功能,导入GPUImage库后,可以用很简单的代码写出一个小的相机应用,主要用到 GPUImageVedioCamera 和继承自它的GPUImageStillCamera下面用代码分析:原创 2015-09-11 16:55:53 · 4870 阅读 · 0 评论 -
7.Builder Pattern的学习和使用
1.面临的问题: 我们通常在初始化一个对象时,需要给该对象的一些属性进行赋值,比如下面这个类:typedef enum{ sexTypeMale, sexTypeFamle} sexType;@interface CYLPerson : NSObject@property (nonatomic, strong) NSString *name;@pr原创 2015-08-31 09:41:34 · 723 阅读 · 0 评论 -
10.在Xcode中如何以非ARC编译某一个文件
在xcode中,当我们导入以前写的一些代码时,那些代码还用的是非ARC,此时在编译时会报错,如何解决这个问题呢?下面一张图即可说明: 设置好后按回车键即可,这样该文件就以非ARC编译了。原创 2015-09-06 14:06:24 · 476 阅读 · 0 评论 -
11.Xcode中实时监测网络状态
当我们开发一个网络应用程序时,我们需要实时监测网络状态,以展现不同的的内容。那么该如何实现呢?1.首先要监测网络状态,我们得包含一个苹果提供的文件Reachability.m以及.h。2.当我们的网络状态改变时,系统会发送通知,所以我们只需要监听该通知即可:[[NSNotificationCenter defaultCenter] addObserver:self selector:@原创 2015-09-06 14:28:03 · 2879 阅读 · 0 评论 -
5.获取iOS系统中相册信息的方法
包含相关库的头文件#import原创 2015-08-24 19:45:00 · 1083 阅读 · 1 评论 -
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 · 3797 阅读 · 0 评论