自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(42)
  • 收藏
  • 关注

原创 CAlayer子类之CAGradientLayer(实现渐变色)

CAGradientLayer,文档介绍很简单,在背景色上绘制渐变色,填满layer。API里只有5个属性:colors(用作渐变的颜色数组)、locations(用作分界的位置数组)endpoint(渐变结束位置)、startpoint(渐变开始位置)、type(表示像素变化方式,只有一个值)。  代码实例:  1先创建一个labelUILabel *label = [[UILabe

2016-03-13 16:01:04 311

原创 支付宝咻一咻动画探究

过年支付宝升级,新版本多了咻一咻功能,里面动画做得挺不错的,特意研究了里面的动画都是怎么实现的。首先是一进去看到的第一个动画,可以看到屏幕中间的按钮周围有个圈在放大缩小,这个动画不难实现,就是对scale属性的改变,然后设置为一直重复,大概代码如下:CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"transfor

2016-02-02 14:42:06 537

原创 苹果警告信

很久没仔细看邮箱,今天刷了一下邮箱,吓一跳,苹果发了一封邮件,说接到投诉,我的app侵权了。好吧,看了一下邮件,还好不是很严重,苹果的语气也不是很重。看了苹果要求的几点:1.要写保证说明没有侵权,需要有官方授权的证明,或者其它苹果认可的材料;2.直接删除app;3.如果开发者不停被投诉侵权,或者企图欺骗苹果或者投诉的公司,会被取消开发者资格;4.不回应投诉或者不进行处理,将会导致a

2016-01-26 19:15:54 597

原创 iOS writeToFile:atomically: 保存数据的一个莫名错误

相信大家都知道像数据或者字典这些有一个保存到本地的writeToFile:fileName atomically:,只要保证里面的数据都是OC里的对象。例如:array、dictionary、nsdate这些的话就可以正常保存,嗯,至少根据官方文档的说法是这样的。可问题是我在writeToFile:fileName atomically:保存字典的时候一直就保存不了,里面的数据对象都是OC框架

2016-01-15 22:52:47 844

原创 coredata的各种报错

相信大家开发的时候都用过coredata,用来保存数据挺方便的。只是问题是,突然发现,如果最开始创建项目的时候没有选取coredata,那么之后要用的话就需要自己手动添加代码到appdelegate里面了,同时也带来了一系列的报错。- (NSManagedObjectModel *)managedObjectModel { // The managed object model f

2015-12-16 18:37:19 299

原创 coredata的各种报错

相信大家开发的时候都用过coredata,用来保存数据挺方便的。只是问题是,突然发现,如果最开始创建项目的时候没有选取coredata,那么之后要用的话就需要自己手动添加代码到appdelegate里面了,同时也带来了一系列的报错。- (NSManagedObjectModel *)managedObjectModel { // The managed object model for

2015-12-16 18:13:02 180

原创 RESIDEMENU实现原理

在写一个项目用RESIDEMENU,这是写得很好的一个开源组件,只需要几行代码就可以使用。所以现在抽空看看代码,看看作者是怎么实现的。- (void)awakeFromNib { if (self.contentViewStoryboardID) { self.contentViewController = [self.storyboard instantiateVie

2015-12-16 18:09:38 147

原创 iOS9新API-UISearchController

随着iOS9的发布,又有一些API被苹果禁止了,UISearchDisplayController就是其中一个,取而代之的是UISearchController,之前找了网上都没多少教程,上去stack overflow找了一下,又参考了一些官方文档,终于搞清了怎么用。  首先声明属性:@property (strong, nonatomic) UISearchController *se

2015-10-20 20:29:23 348

翻译 iOS中的几何学 CGGeometry

本文翻译自http://nshipster.com,原文地址:点击阅读原文,如有错漏,欢迎斧正。  首先来了解一下iOS和OS X的绘制系统:  1.CGPoint,是一个结构体,表示了二维坐标系统中的一个点,iOS中原点是左上角,X轴和Y轴的值分别是向右和向下增加。OS X中原点是左下角,相反地,X轴和Y轴的值分别是向右和向上增加。  2.CGSize,也是一个结构体,表示了包括宽度

2015-09-08 23:39:41 226

翻译 如何用CAShapeLayer实现圆环图片加载动画

本文翻译自知名iOS教学网站www.raywenderlich.com,原文地址:点击阅读原文,原文是使用swift语言,翻译的时候转换至OC,翻译如有错漏,欢迎斧正.  这是工程最初运行的样子,就只看到一张图片,如下:    第一次运行的时候,会需要花费几秒钟下载图片,下载完毕后图片就会显示出来,没有任何的加载动画,加载动画就是我们本篇教学的目的.我们需要通过以下两步来创建加载动

2015-09-07 15:18:33 335

翻译 如何用CAShapeLayer实现圆圈图片加载动画

本文翻译自RAYWENDERLICHTUTORIALS FOR DEVE原文地址:点击阅读原文

2015-09-07 15:16:53 114

原创 iOS动画 CALaye与CAAnimation

首先来认识CALayer,这是一个与UIView互相依存的类,CALayer可以说是基于UIView的,有着很多属性,如frame、backgroundclolor,还有着自己的delegate,虽然里面的方法不多。layer还可以添加sublayer,就像view可以添加subview一样。因为CALayer是管理基于图像的内容,也是用这部分来实现动画。很好的一个例子就是设置圆角图像:sel

2015-09-04 23:29:15 349

原创 UITableViewCell 重用机制例子

今日在写一个app,用到tableview,需要设置第一行的颜色是白色,其余的则是黑色,一开始代码是这样的:   if (indexPath.row == 0) {            cell.dateLabel.textColor = [UIColor whiteColor];            cell.tmpLabel.textColor = [UIColor whi

2015-08-14 19:31:13 211

原创 Objective-C 之 基于块的遍历方式

Objective-C现在共有四种遍历方式,for循环、for in快速遍历、NSEnumerator遍历、UsingBlock基于块的遍历。  - (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block 这是Objective-C最新引进的一种基于block对遍历方法

2015-08-14 17:21:00 251

原创 Objective-C 属性访问or直接访问?

当定义了一个属性的时候,例如 @property (nonatomic, strong) UIImageView* imageView;  有两种访问方法self.imageView、_imageView,属性访问和直接访问有几个区别:  1直接访问不用经过“方法派发”,速度上有一定的优势  2直接访问,绕过了“内存管理语义”,比如一个属性声明为copy的,直接访问只会释放旧值并保

2015-08-14 16:44:49 214

原创 Objective-C好习惯 之 少用#define

开发的时候,不免要定义一些常量,例如 #define offSet 30 这样,把offSet替换为30。但是这样定义出来的常量没有类型信息,命名又未明确指出类型。有个办法比#define更好,那就是类型常量:  static const CGFloat offSet = 30;  这样的话就清楚描述了常量的含义,可以知道类型为CGFloat,代码更容易理解。而且也要注意定义常量的位置,如

2015-08-14 16:14:50 192

原创 iOS多任务核心GCD-分派队列

GCD(Grand Central Dispatch)是iOS多任务的核心,广泛应用在iOS编程或者系统层面的各个方面。GCD是非常底层的框架,比操作队列更底层。GCD严格遵守先进先出(FIFO)结构,所以是无法在队列中使用优先级或者调整次序。  首先最重要的一点,分派队列是队列,而不是线程。队列是组织块的,调用dispatch_async不会让块执行,只是把块添加到队列中。GCD中队列是有层

2015-08-11 11:13:42 271

原创 UIPickerView 自定义视图不能居中

近日在写一个UIPickerView的时候,自定义视图可是发现不能居中:  在一番探索后,发现问题关键在label的frame上,修改了数值后就可以居中了,不过不是很明白原理:

2015-08-07 22:53:11 492

原创 UIPickerView 自定义视图居中问题

近日在写一个UIPickerView的时候,在- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 方法中自定义的时候,发现不能居中:在经过一番探索之后,由莫名奇妙解决

2015-08-07 22:41:03 358

原创 Objective-C 之 #import与@import

现在的Objective-C类的数量非常庞大,一般来说需要用到系统框架的时候,都会使用#import命令来引入,#import命令会自动引入框架的全部头文件,这样,不再需要单独引入某个类的头文件。但是这样做的话,当框架中的类以及框架越来越多的时候,就会显得很臃肿甚至降低效率。为了提高效率,pch文件应运而生,作用就是第一次编译时,预编译pch文件中的列出的框架并缓存,这种做法会提高效率。  但

2015-08-07 22:39:23 782

原创 Objective-C 之 异常与未知选择器

Objective-C对象都有一个isa指针,对象可以通过isa指针知道自身的类型。对于一个对象,只能响应所属类中具有相应实现方法的消息。但是对象的类型只能在运行的时候确定,所以就会发生应用向某个对象发送了无法响应的消息。这时候就会抛出异常。

2015-08-07 22:18:44 86

原创 UIGestureRecognizer同时识别多个手势

一般来说,UIGestureRecognizer对象不会将本身已经处理过的触摸事件再交给其它的UIGestureRecognizer对象处理,例如:想实现先通过长按选择屏幕上的线条,然后再拖动,由于前述UIGestureRecognizer对象的特性,实际效果是只能识别长按手势,而无法识别之后的拖动手势。  要处理这个问题,就需要用到UIGestureRecognizerdelegate来解决

2015-08-06 10:51:55 240

原创 Objective-C 之 响应对象链

UIResponder对象可以接受触摸事件,UIView、UIWindow、UIViewController等都是其子类,其中UIViewController不是视图对象,既不能被触摸得到,也无法显示,为什么也会是 UIResponder子类的呢?这不是很奇怪吗?  其实,UIResponder对象都会有一个名为nextResponder的指针,藉由这个指针,可以组成一个响应对象链。当UIVi

2015-08-06 10:24:15 191

原创 Objective-C 之 main()与UIApplication

iOS开发者们应该很清楚知道,每个iOS程序都会有main.m,代码如图:   代码中UIApplicationMain函数创建了一个UIApplication对象,每个app都有且只有一个UIApplication对象,作用是维护运行循环,而且运行循环会一直循环下去。UIApplicationMain还会创建类的对象,将其设置为UIApplication的delegate。在应用启动运行

2015-08-06 01:09:53 273

原创 Objective-C 之 栈(stack)与堆(heap)

相信iOS开发者都会常常听到"栈"与"堆"两个概念字,但是这两个概念到底是什么呢?下面来探讨一下:  栈是内存中的一块区域,都有方法或者函数被执行时,栈就会为方法或者函数分配自己的一部分内存空间,这部分内存空间称为桢(frame)。当某个应用启动并运行main函数时,main函数的桢会被保留在栈的底部,如果main调用别的方法或者函数,那么这个方法或者函数的桢就会压入栈的顶部,即main函数桢

2015-08-06 00:52:41 204

转载 iOS7官方推荐图标和图像尺寸

描述iPhone 5和iPod touch的尺寸(高清晰度)大小为iPhone和iPod touch(高分辨率)iPad的尺寸为(高清晰度)大小为iPad 2和iPad迷你(标准分辨率)应用程序图标(应用程序所需的所有)120×120120×120152×15276×76

2015-07-12 22:08:54 282

原创 ReactiveCocoa学习随笔 三

经过前面的工作,已经实现了实时监测两个输入信号并作相应的操作,现在下一步要做的就是合并这两个信号;RACSignal *signUpActiveSignal =  [RACSignal combineLatest:@[validUsernameSignal, validPasswordSignal]                    reduce:^id(NSNumbe

2015-06-16 16:36:51 119

原创 CALayer-anchorPoint

首先看一下苹果的官方文档说明:The CALayer class manages image-based content and allows you to perform animations on that content. 大概意思就是CALayer管理基于图片的内容,并可以实现动画.anchorPoint是其一个很重要的属性,对动画的展示有决定性作用.以下是官方的图示要特别

2015-06-10 10:25:18 154

翻译 block常见用法整理

作为本地变量的block:返回值类型 ^(block名称) (参数类型) = ^返回值类型

2015-06-02 15:26:15 167

原创 ReactiveCocoa学习随笔 二

RACSignal *validUsernameSignal = [self.usernameTextField.rac_textSignal map:^id(NSString *text) { return @([self isValidUsername:text]); }]; RACSignal *validPasswordSignal = [s

2015-06-01 09:33:44 106

原创 segue 不同的思维

近日在写一个segue,是由a视图跳转b视图,很自然segue是创建在button上,点击button的时候做个判断,如果是真就跳转。在搜索了一下,发现原来segue不一定是直接绑定到button上,还可以在父view上直接创建segue,点击button的时候仍然是做判断,如果为真就performsegue

2015-05-31 21:29:38 160

原创 iOS8新API UIAlertController

近日在写一个提示框的时候,发现苹果把uialertview禁止了,同时提供了一个新的api UIAlertController,使用起来也挺简单的,如下图第一个方法是配置提示框的标题和显示信息,以及style;第二个方法是设置一个按钮,用户点击了之后alert就会消失,还有一个handler可以接受用户的点击然后设置需要的下一步处理

2015-05-31 21:24:21 126

原创 imageView 覆盖控件

近日在写一个imageview,然后用addsubview添加进父view,可是不料原有的ui控件全部被覆盖,变相消失了,郁闷,查找了一下api,发现时用的添加方法不对,改了一下就可以了

2015-05-31 21:18:13 302

原创 imageView 解决图片不能全屏

在写一个imageview的时候,发现图片无法全屏,而且怎么设置contentmode都没用,很郁闷,后来搜索了一下,又查了一下api,终于解决问题,解决问题的关键是要获取父view的frame作为imageview的frame,这样再设置图片久可以全屏了

2015-05-31 21:14:36 440

原创 VC间传值之单例

开发中有时候需要在一个viewcontrollerA输入,确定后跳转另一个viewcontrollerB,在viewcontrollerB需要获取在viewcontrollerA输入的值,研究了很久,发现有很多种方法,本人在开发的时候选择了使用NSUserDefaults类来传递值。如下图,viewcontrollerA输入,使用NSUserDefaults类保存值viewcont

2015-05-27 21:22:19 146

原创 tableViewCell 字体颜色设置问题

如果正常要设置一个系统默认tableviewcell,很简单直接获取cell.textlable.textcolor再设置成自己想要的颜色就可以了,简单直接的方法。可是近日在写一个tableview的时候,发现无论怎么设置都不行,还是默认的黑色,经过一些搜索和思考,发现了问题的所在。cell.textlable.textcolor之能在系统默认的tableviewcell中起作用,如果是自定义

2015-05-27 21:11:45 335

原创 Xcode 无法archive

本人之前最初接触xcode的时候,写了一个小程序,准备打包上传的时候发现product->archive是灰色的,无法打包,上网找了半天,最终发现问题出现在模拟器的选择上。一般平时测试程序时在模拟器上,如下图。如果我们需要打包程序,应该是这样,这样表示我们选择了iOS设备,如果连接设备会显示名字,如果没连接就会显示iOS device.选择了之后就可以archive了

2015-05-27 21:02:20 457

转载 iOS 用户登陆信息存储

天狐博客 » iOS开发之用户登陆信息存储大致信息存储分为三种方式一.单例模式,登陆后把用户数据存储在单例对象我通常是存在AppDelegate,存在这里的好处是,用户数据的生命周期与app运行周期相同,如果app关闭或者闪退,下次开启app就是未登陆状态,以下是部分关键代码12345678910111213//AppDelegate.h文件#import

2015-05-27 11:21:05 553

原创 ReactiveCocoa学习随笔 一

[self.usernameTextField.rac_textSignal subscribeNext:^(id x){  NSLog(@"%@", x);}];实现了动态监视textfield输入的功能,一旦有输入,就会执行subscribeNext block,动态NSLog textfield所输入的文本.[[self.usernameTextField

2015-05-27 11:01:03 130

原创 whose view is not in the window hierarchy!

写代码的时候在-viewdidload里面做了个判断,如果判断为否,则弹出一个alert,可是莫名其妙地出现一个警告,警告如下。后来做了一些测试,找出了原因,是因为在-viewdidload里面在显示任何view的话都会有这个警告,个人理解-viewdidload阶段尚处于读取阶段,不能修改ui显示view,解决方法在视图周期其他的方法里调用,如-viewwillappear就没问题了

2015-05-26 20:51:47 198

空空如也

空空如也

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

TA关注的人

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