自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 UICollectionView与UITableView在复用时,数据重叠问题

在进行了cell的复用后,如果要避免出现数据重叠,图片错乱的问题,首先要注意,cell中Label、Button、ImageView等的创建要放在初始化方法里面,tableViewCell的初始化方法是- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ s

2017-01-06 17:03:16 1870

转载 当前日期与制定日期的比较

1、首先获取当前日期NSDate形式,指定一个日期格式#pragma mark -得到当前时间 - (NSDate *)getCurrentTime{ NSDateFormatter *formatter=[[NSDateFormatter alloc]init]; [formatter setDateFormat:@"dd-MM-yyyy-HHmmss"];

2016-12-15 11:14:29 845

原创 Core Animation简介

之前介绍了UIView动画的使用,UIView可以实现一般动画,但是更为复杂的动画,需要用core animation core animation基于openGL 和 core graphics。Core Animation是一套包含图形绘制、投影、动画的Objective-C类集合,该框架包含在QuartzCore.framework中,它因为被用于处理更为强大的平滑的转场效果而引入OS X

2016-11-10 12:37:13 480

转载 UITableView自动计算cell高度并缓存

一.自动计算高度: 在iOS8之前,如果UITableViewCell的高度是动态的,如果想要显示正确的话,我们需要在下面这个UITableView的代理方法中,返回每一行的精确高度:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;如果cell的控件很多,

2016-10-25 15:31:50 1297

转载 iOS UIWebView 通过 cookie 完成自动登录验证

说明: 通过UIWebView登录后,会自动得到web服务器设置的cookie包括服务器中的seesionid。 cookie不会自动保存在app里面,需要通过设置才能在下次启动app时获取。 自动登录,需要设置header,才能将cookie带给web服务器。 自动登录,需要web服务器端进行cookie验证方可登录。 实现流程:做好Sign in页面后,通过get或post递交表单给

2016-10-22 14:42:45 473

转载 Cookie和Session 区别

二者的定义:当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie里的内容来判断使用者,送出特定的网页内容给你。 Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie来辨认使用者

2016-10-21 15:51:04 241

转载 Cookie简介

一、何为Cookie Cookie是网站为了便是终端身份,保存在终端本地的用户凭证信息。Cookie中的字段与意义由服务端进行定义。例如,当用户在某个网站进行了登录操作后,服务端会将Cookie信息返回给终端,终端会将这些信息进行保存,在下一次再次访问这个网站时,终端会将保存的Cookie信息一并发送到服务端,服务端根据Cookie信息是否有效来判断此用户是否可以自动登录。二、iOS中进行Cook

2016-10-21 15:30:12 325

原创 FMDB简单介绍

上篇文章讲解了Sqlite但是sql书写起来比较麻烦,尤其是其它语言转过来的程序员会感觉吃力,于是,就出现了一系列将SQLite API进行封装的库,例如FMDB、 PlausibleDatabase、SQLitepersistentobjects等, FMDB是一款简洁、易用的封装库,这一篇文章简单介绍下FMDB的使用。一. FMDB的优点: 1.使用起来更加面向对象,省去了很多麻烦

2016-09-01 12:13:55 479

原创 枚举类型 enum,NS_ENUM,NS_OPTIONS

枚举值一般是4个字节的int值,在64位系统上是8个字节。 在iOS6和Mac OS 10.8以后Apple引入了两个宏来重新定义这两个枚举类型,实际上是将enum定义和typedef合二为一,并且采用不同的宏来从代码角度来区分。 NS_OPTIONS一般用来定义位移相关操作的枚举值,我们可以参考UIKit.Framework的头文件,可以看到大量的枚举定义。enum建议使用 NS_ENUM 和

2016-08-30 16:08:44 525

转载 SQLite(数据库)简析

1.// 使用前需要引入 注意是<>括号,不是双引号#import <sqlite3.h>2、sqlite 的方法 sqlite3 *db, 数据库句柄,跟文件句柄FILE很类似 sqlite3_stmt *stmt, 这个相当于ODBC的Command对象,用于保存编译好的SQL语句 sqlite3_open(), 打开数据库,没有数据库时创建。 sqlit

2016-08-22 14:47:47 545

原创 数据持久化

1.为什么要进行数据持久化? 我们平时的浏览记录,qq的聊天记录,收藏夹等,每次打开程序的视乎都会存在,理论上每次关闭应用的时候,程序中使用的数据资源都应该被释放,将程序运行过程中或运行结束后的某些信息持久的保存起来就是数据持久化。2:什么是数据持久化 将数据模型转换成存储模型(内存中某些对象保存到磁盘中)3:数据持久化的优点 就是将数据持久话的保存起来,不会丢失4.数

2016-08-22 14:43:53 2266

转载 RunLoop浅析

1.RunLoop简介 当有持续的异步任务需求时,我们会创建一个独立的生命周期可控的线程。RunLoop就是控制线程生命周期并接收事件进行处理的机制。RunLoop是iOS事件响应与任务处理最核心的机制,它贯穿iOS整个系统。通过RunLoop机制实现省电,流畅,响应速度快,用户体验好1.使程序一直运行并接受用户输入 2.决定程序在何时应该处理哪些Event 3.调用解耦 4.节省CPU时间

2016-08-16 11:50:34 1014

转载 内存管理(二)借助工具解决内存问题

本文转载自http://www.csdn.net/article/1970-01-01/2826272 先下载转载文章中的实例MemoryProblems。1.悬挂指针问题悬挂指针(Dangling Pointer)就是当指针指向的对象已经释放或回收后,但没有对指针做任何修改(一般来说,将它指向空指针),而是仍然指向原来已经回收的地址。如果指针指向的对象已经释放,但仍然使用,那么就会导致程序Cra

2016-08-11 17:29:42 652

原创 内存管理(一):基本概念与原理

在Objective-C的内存管理中,其实就是引用计数(reference count)的管理。内存管理就是在程序需要时程序员分配一段内存空间,而当使用完之后将它释放。如果程序员对内存资源使用不当,有时不仅会造成内存资源浪费,甚至会导致程序crach。 1:什么是内存管理 ①移动设备内存是有限,每个应用的内存也是有限 ②当应用程序所占用的内存较多时,系统会发出警

2016-08-11 16:24:03 1208

原创 MVC与MVVM

mvc是最常见的软件架构之一,本文主要简单介绍下mvc和MVVM的架构的区别。 在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 MVC模型关注的是Model的不变,所以,在MVC模型里,Model不依赖于View,但是 View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也

2016-08-08 17:21:45 730

原创 const(常量)与define(宏)的正确使用

一.首先介绍下const与宏的区别,这也是面试中经常问到的问题: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量。编译时刻:宏是预编译(编译之前处理),const是编译阶段。编译检查:宏不做检查,不会报编译错误,只是替换,const会编译检查,会报编译错误。宏的好处:宏能定义一些函数,方法。 const不能。宏的坏处:使用大量宏,容易造成编

2016-06-07 16:58:09 4192

原创 static的使用

static作用:(1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次, 因此其值在下次调用时仍维持上次的值;(比如在cell的重用标志中用static来修饰字符串,原因是:使用static会将字符串放到静态区,程序运行过程中,只会初始化一次,作为cell的重用标识一般使用static修饰,确保能是cell进行重用) (2)在模块内的 stati

2016-06-07 11:12:02 355

原创 extern的使用

extern作用: 只是用来获取全局变量(包括全局静态变量)的值,不能用于定义变量extern工作原理: 先在当前文件查找有没有全局变量,没有找到,才会去其他文件查找。 使用方法: 在viewController中定义的方法为:#import "ViewController.h"**//NSString* hello = @"helloworld"** ;//定义在这个地方和@impleme

2016-06-06 17:59:30 379

转载 多线程

iOS有三种多线程编程的技术,分别是: (一)NSThread (二)Cocoa NSOperation (三)GCD(全称:Grand Central Dispatch)这三种编程方式从上到下,抽象度层次是从低到高的,抽象度越高的使用越简单,也是Apple最推荐使用的。三种方式的优缺点介绍: 1)NSThread: 优点:NSThread 比其他两个轻量级 缺点:需要自己管理线程的生命

2016-06-03 17:11:44 293

原创 进程、线程及多进程多线程简介

首先简单介绍下概念:进程:是CPU独立运行和独立调度的基本单位,是一个正在执行的程序,计算机中正在运行的程序实例,是系统资源分配和调度的一个独立单位,可以分配给处理器并由处理器执行的一个实体。进程拥有自己独立的位置空间,在没有经过进程本身允许的情况下,其他进程不能访问改进程的地址空间。线程:是进程的一部分,它是进程中用来执行任务的单位。一个进程可以拥有多个线程,但最少要有一个主线程;每个线程不能独立

2016-06-03 15:27:11 896

原创 收藏文章的网址(未整理)

js oc 相互调用: http://blog.csdn.net/lwjok2007/article/details/47058101/http://blog.csdn.net/lwjok2007/article/details/47058795项目上传到github http://www.jianshu.com/p/9f6bcfe21b94 或者: http://www.cocoachin

2016-05-23 10:29:59 362

原创 获取字符串的宽度或者高度来实现控件的宽或者高的自适应

由字符串宽度(高度),获得其高度(宽度)。从而来实现控件的宽或者高的自适应(由获取到的宽度或者高度来根据情况修改约束) 实现方法//已知字符串的字号和高度,获取其宽度的方法 CGFloat width = [self contentHeightWithSize:12 height:12 string:@"字符串内容"];-(CGFloat)contentHeightWithSize:(CGF

2016-05-16 16:46:44 514

原创 JSON数据与NSDictionary和NSArray之间的转化

在一次项目中,需要将数组作为字典的value上传给后台,查询发现,数组是不能直接作为value上传给后台的,需要将数组转化为json串才可以。顺便就查询总结了下字典,数组和json之间的相互转化。一.将字典或者数组转化为json串- (NSData *)toJSONData:(id)theData{ NSError *error = nil; NSData *jsonData = [N

2016-05-12 17:36:26 479

原创 UIPresentationController简介

UIPresentationController 是 iOS8 新增的一个 API,用来控制 controller 之间的跳转特效。比如希望实现一个特效,显示一个窗口,大小和位置都是自定义的,并且遮罩在原来的页面上。在之前,可以操作view的一些方法来实现。实现自定义过渡 我们需要两个对象来实现自定义过渡,一个 UIPresentationController 的子类以及一个遵从 UIViewC

2016-04-18 10:52:32 4930 1

原创 使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)

开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求。NSMuttableAttstring(带属性的字符串),上面的一些需求都可以很简便的实现。 1.实例化方法有两种: 使用字符串来初始化 ①:- (id)initWithString:(NSString *)str; 例如: NSMutableAttributedString *AttributedStr

2016-04-13 18:20:45 2521

原创 UIView动画

使用UIView和CALayer都能实现动画效果,但是在真实的开发中,一般还是主要使用UIView封装的动画,而很少使用CALayer的动画。CALayer核心动画与UIView动画的区别: UIView封装的动画执行完毕之后不会反弹。即如果是通过CALayer核心动画改变layer的位置状态,表面上看虽然已经改变了,但是实际上它的位置是没有改变的。一.基本方式:使用UIView类的UIView

2016-04-06 16:43:02 494

原创 ios开发中常用的函数和常数

下面为ios开发中常用到的函数和常数,总结如下:

2016-04-06 15:29:43 278

转载 CAShapeLayer + UIBezierPath结合动画效果

先简单的介绍下CAShapeLayer 1,CAShapeLayer继承自CALayer,可使用CALayer的所有属性 2,CAShapeLayer需要和贝塞尔曲线配合使用才有意义。 Shape:形状 贝塞尔曲线可以为其提供形状,而单独使用CAShapeLayer是没有任何意义的。 3,使用CAShapeLayer与贝塞尔曲线可以实现不在

2016-03-18 11:41:02 2789

原创 UIBezierPath的使用

基础知识 使用UIBezierPath可以创建基于矢量的路径,此类是Core Graphics框架关于路径的封装。使用此类可以定义简单的形状,如椭圆、矩形或者有多个直线和曲线段组成的形状等。 UIBezierPath是CGPathRef数据类型的封装。如果是基于矢量形状的路径,都用直线和曲线去创建。我们使用直线段去创建矩形和多边形,使用曲线去创建圆弧(arc)、圆或者其他复杂的曲线形状。

2016-03-17 14:19:09 457

转载 Runtime(三)利用运行时来为类别添加属性

objc runtime 动态增加属性 看一个类别和动态添加属性的例子: UILabel+Associate.h#import <UIKit/UIKit.h>@interface UILabel (Associate)- (void) setFlashColor:(UIColor *) flashColor;- (UIColor *) getFlashColor;@endUILabel+Asso

2016-03-11 16:51:42 1063

原创 Runtime(二)动态添加方法以及消息转发机制

runtime中函数的调用: 下面一张图详细的概括了每个函数调用的先后以及执行的前提: 1.对象在收到无法解读的消息后,首先会调用所属类的 + (BOOL)resolveInstanceMethod:(SEL)sel 这个方法在运行时,没有找到SEL的IML时就会执行。这个函数是给类利用class_addMethod添加函数的机会。根据文档,如果实现了添加函数代码则返回YES,未实现返回N

2016-03-11 16:47:35 951

原创 Runtime简介(一)

一、首先,从 runtime.h头文件中找到对 class 与 object 的定义 typedef struct objc_class *Class; struct objc_object { Class isa; }; typedef struct objc_object *id;由此可见,Class是一个指向objc_class结构体的指针,而id是一个指向objc_object结构

2016-03-11 15:42:32 388

原创 零碎知识点

1.将字符串转化为控制器UIViewController *viewCon = NSClassFromString(@“className”);2.plist文件的读取 NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"plistdemo" ofType:@"plist"]; NSMutableDictionar

2016-03-10 15:17:23 296

转载 可移动的CollectionViewCell

1.创建collectionView并设置代理- (UICollectionView *)collectionView{ if (_collectionView == nil) { UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; layout.ite

2016-03-03 18:32:55 793

原创 UICollectionVIew的简单使用

直接上代码并做注释:@interface ViewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout>@end@implementation ViewController- (void)viewDidLoad { [super viewDidL

2016-03-02 14:39:14 436

原创 UITableView注意点

当自定义了cell(假如名字为myCell),在控制器中想调用这个cell中的某个属性(假如为name)时,不可直接用myCell.name,这样调用会发现myCell.name中为空,实际代码应该为:NSIndexPath *indexPath = [NSIndexPath indexPathForItem:1 inSection:0];//假如这个cell在tableView中为第0个分区的第一

2016-03-01 10:17:45 304

转载 UITableView属性及方法大全

UITableView——-表视图–继承UIScrollView并遵守NSCoding协议属性 frame————-设置控件的位置和大小 backgroundColor——–设置控件的颜色 style——–获取表视图的样式 dataSource———设置UITableViewDataSource的代理 delegate———设置UITableViewDelegate代理 sectionH

2016-02-25 17:13:39 476

转载 修改Xcode自动生成的文件注释来导出API文档

文档效果图 导出注释标准/*! 头文件基本信息。这个用在每个源代码文件的头文件的最开头。@header 这里的信息应该与该源代码文件的名字一致@abstract 关于这个源代码文件的一些基本描述@author Sindri Lin (作者信息)@version 1.00 2012/01/20 Creation (此文档的版本信息)*//*! 类信息。此注释用在类声明的开头。@class

2016-02-24 14:53:22 1911

转载 HTTPS传输签名证书的获取

在基于服务器采用https通讯时候,客户端通过获取服务器的证书,进行一系列验证,那么应该如何获取服务器的证书呢?#import "ViewController.h"@interface ViewController ()<NSURLSessionDelegate>@end@implementation ViewController- (void)viewDidLoad {[super vi

2016-02-22 15:04:23 667

转载 十六进制和字符串相互转换

//将十六进制的字符串转换成NSString则可使用如下方式:+ (NSString *)convertHexStrToString:(NSString *)str {if (!str || [str length] == 0) { return nil;}NSMutableData *hexData = [[NSMutableData alloc] initWithCapacity:

2016-02-22 14:49:33 634

空空如也

空空如也

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

TA关注的人

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