iOS开发
Lotheve
勿谓湖小 天在其中
展开
-
iOS开发—应用屏幕横竖屏切换设置
ios6.0以后横竖屏切换的设置原创 2015-03-09 18:25:13 · 2198 阅读 · 0 评论 -
iOS开发-XML解析
简单介绍XML文件的解析方式有两种:SAX (Simple API for XML) 它以逐行解析的方式,通过协议回调来跟踪解析过程。DOM (Document Object Model)它将文件一次性解析好之后加入内存,无法跟踪解析过程,对内存的要求比较高,因此比较适合解析小文件。iOS提供了两套解析XML文件的框架:NSXMLParser和libxml2NSXMLParser:一套基于O原创 2016-03-10 20:17:18 · 1345 阅读 · 0 评论 -
iOS开发-剪切板实现拷贝粘贴
简单介绍在应用程序中,经常会有对一段文字进行拷贝、剪切、粘贴的需求,iOS提供了3个自带这些功能的控件:UITextFieldUITextViewUIWebView但是实际中有时候可能需要对这3个以外的控件进行文本、图片等的拷贝粘贴,就需要自定义实现。UIKit framework为我们提供了几个相关的类和协议用来实现这一功能。UIPasteboard:剪切板,用来向其中写入数据以及从中读原创 2016-04-02 16:26:04 · 6331 阅读 · 0 评论 -
Cell展开&&收缩全垒打
引言最近想把UITableView(表视图)全面熟悉一遍,接触到两个实例方法- (void)beginUpdates;- (void)endUpdates;经过一番研究后发现这两个方法除了用来批量操作Cell,还有改变动态更新行高的作用。官方文档给出了这样的说明: You can also use this method followed by the endUpdates method to原创 2016-03-30 10:09:14 · 3544 阅读 · 0 评论 -
UITableView API大百科
UITableView API全解,包括UITableViewDataSource、UITableViewDelegate原创 2016-04-01 12:03:15 · 1226 阅读 · 0 评论 -
IOS开发-SQLite数据库
简单介绍iOS中保存本地数据的方法有多种:Plist、NSUserDefault、NSKeyArchiver。然而这些方法有一个共性,就是只能用于存储少量的数据,如果需要存储大量的数据,使用这些方法就会存在很大的性能问题。 SQLite是一种轻量级的关系型数据库,由于它占用的资源非常少,主要用于作为移动端的数据库来使用,安卓和iOS使用的都是SQLite数据库,其SDK中均内置了SQLite驱动,原创 2016-03-07 20:21:41 · 895 阅读 · 0 评论 -
IOS开发-NSNumber、NSValue、NSData的区别
简单介绍我们在编码的时候,有时候需要将C里面原生的数据封装成对象,这样才能将其打包进NSDictionary或者NSArray进行存储或者其他操作;又譬如有时候需要存储结构体、图片等数据。OC给我们提供了一些相关接口,比较常见的是NSNumber、NSValue和NSData;NSNumberNSNumber主要是用来封装ANSI C内置的数据,比如char,float,int等等,相关方法如下:原创 2016-03-08 14:45:00 · 2056 阅读 · 0 评论 -
iOS多线程之NSThread
前言多线程的价值无需赘述,对一个app性能和用户交互起着至关重要的作用。说道多线程,不得不提一个老猿常谈的问题:没错!什么是进程?什么是线程?两者有什么区别。我的天,瞬间脑洞又大了!赶紧翻操作系统!科普:进程与线程进程是程序在数据集上的执行过程。注意进程不是程序,而是程序执行的一个动态的过程。早期的多道程序系统计算机是没有线程这个概念的,那时候的进程是程序在操作系统中的最小执行单位,同时也是资源分配原创 2016-03-18 12:01:15 · 1182 阅读 · 0 评论 -
IOS开发—网络请求、上传下载、断点续传(NSURLSession)
简单说明在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作。 NSURLSessionConfiguration类对网络请求层的设置选项进行了扩充,可以配置从指定可用网络,到 cookie,安全性,缓存策略,再到使用自定义协议,启动事件的设置,以及用于移动设备优化的几个新属性。本例只对常规的原创 2016-03-06 20:51:56 · 1978 阅读 · 0 评论 -
iOS开发—UITableView重用机制的理解
对于一个UITableView而言,可能需要显示成百上千个Cell,如果每个cell都单独创建的话,会消耗很大的内存。为了避免这种情况,重用机制就诞生了。原创 2015-07-15 22:43:02 · 2313 阅读 · 0 评论 -
iOS开发-UIScrollView详解
属性directionalLockEnabled用于拖拽的时候锁定滚动方向 默认为NO即不锁定bounces用于指示scrollView的内容边界能否超出scrollView边界 默认为YES,即有回弹效果alwaysBounceVertical垂直方向contentView高度小于scrollView高度时仍能拖拽(前提是bouncs属性为YES)alwaysBounceVertical水原创 2016-03-16 12:31:33 · 862 阅读 · 0 评论 -
IOS开发—多线程简介
IOS多线程简介原创 2015-03-12 20:06:35 · 781 阅读 · 0 评论 -
IOS开发—网络请求(HTTP协议)介绍
介绍ios开发中最长用到的HTTP网络请求协议以及GET请求、POST请求、同步请求、异步请求。原创 2015-03-19 09:09:20 · 1229 阅读 · 0 评论 -
IOS开发—Quartz 2D介绍
Quartz 2D学习记录Quartz 2D简单介绍一、什么是Quartz 2DQuarz 2D是一个二维绘画引擎,同时支持ios和mac,其API是Core Graphics框架的,是纯C语言的。IOS系统提供的大部分控件的内容都是通过Quartz 2D画出来的,因此Quartz 2D的一个很重要的价值是:自定义view(自定义UI控件)。二、一个重要的概念:图形上下文图形上下文(Graphics原创 2015-08-13 21:39:37 · 1514 阅读 · 0 评论 -
Gesture Recognizers与触摸事件分发
Gesture Recognizers与触摸事件分发一.Gesture RecognizersGesture Recognizers是在iOS3.2引入的,可以用来识别手势、简化定制视图事件处理的对象。Gesture Recognizers的基类为UIGestureRecognizer,这一个抽象基类,定义了实现底层手势识别行为的编程接口。在UIKit框架中提供了6个具体的手势识别类,用来转载 2015-06-14 18:20:31 · 949 阅读 · 0 评论 -
IOS开发—UIScrollView的contentSize、contentInset、contentOffset的理解
原以为对scrollView的这几个属性已经够了解了,最近碰到contentInset才发现自己依旧是含糊不清的,在此再做一番理解:UIScrollView:以容器的方式存在contentView:内容视图,scrollView上用来滚动的区域,姑且将其当做是一个view方便理解,add到scrollView上的视图或者控件都是添加在这上面的。这个东西并不存在,或者说不知道是否存在,至少我原创 2015-10-30 20:17:32 · 1864 阅读 · 0 评论 -
IOS开发-初识CoreData
简单介绍1.Core Data 是数据持久化存储的最佳方式2.数据最终的存储类型可以是:SQLite数据库,XML,二进制,内存里,或自定义数据类型 在Mac OS X 10.5Leopard及以后的版本中,开发者也可以通过继承NSPersistentStore类以创建自定义的存储格式3.好处:能够合理管理内存,避免使用sql的麻烦,高效4.构成:(1)NSManagedObjectContext原创 2016-03-10 12:58:35 · 807 阅读 · 0 评论 -
iOS开发-视图控制器相关
视图控制器生命周期alloc创建控制器,分配内存地址init初始化控制器。loadView加载视图。控制器被创建以后,其view并没有随之创建(即self.view是为nil),而是在该方法中创建view,将其赋值给self.view。若是nib文件,则加载nib中的view(包括子视图);若是纯代码,则自动创建一个view。viewDidLoad视图加载完毕。可以在这里对视图做自定义的更改原创 2016-04-05 17:32:20 · 906 阅读 · 0 评论 -
iOS开发—本地化
本地化,即使APP能够适应用户不同语言的需求,下面介绍如何使应用本地化。一、准备工作1.创建项目工程创建好的工程结构如图:2.搭建界面在StoryBoard中搭建好界面,这里简单起见,只用一个UILabel作演示,在控制器中创建输出口。3.硬编码展示在视图控制器中添加代码 self.labelTest.text = @”This is a Demo”; 硬编码效果:二、本地化1.创建string原创 2015-09-19 15:11:08 · 793 阅读 · 0 评论 -
iOS URL编码&base64编码
URL编码网络标准RFC 1738中规定URL中只能包含英文字、阿拉伯数字以及一些特殊字符。具体包括:字母和数组[0-9a-zA-Z]、特殊符号-._~:?#[]@!$&'()*+,;=\` 。URL中若含有这些规定符号以外的符号,URL都是不合法的,因此对于一些含有特殊符号或中文字符的URL,在请求前需要对URL进行编码。下面URL作为本例中编码演示的原始URLNSString *urlStrin原创 2016-12-17 14:04:55 · 3811 阅读 · 0 评论 -
IOS开发—GCD介绍
IOS多线程(GCD)介绍原创 2015-03-13 14:52:34 · 1148 阅读 · 0 评论 -
iOS事件机制
响应者链我们的视图结构是一个N叉树(一个视图可以有多个子视图,一个子视图同一时刻只有一个父视图),而每一个继承UIResponder的对象都可以在这个N叉树中扮演一个节点。当叶节点成为最高响应者的时候,从这个叶节点开始往其父节点开始追朔出一条链,那么对于这一个叶节点来讲,这一条链就是当前的响应者链,而这一个节点就是这条响应链的hit-test view。响应者链将系统捕获到的由UITouch(触摸)原创 2016-08-21 17:15:38 · 682 阅读 · 0 评论 -
iOS热修复(热更新)技术预研
热修复简介对于iOS应用而言,app store的审核周期可能通常维持在1-2个星期。倘若一个线上的应用出现了一些bug,甚至是致命的崩溃,这时候假如按照苹果的套路乖乖重新发布一个版本,然后静静等待看似漫无期限的审核周期,最终结果就是:用户大量流失。因此,对于一些线上的bug,需要有及时修复的能力,这就是所谓的热修复(hotfix)。由于苹果应用审核周期长(毕竟苹果尿性高),hotfix就是一个非常原创 2016-12-06 23:00:08 · 9406 阅读 · 0 评论 -
iOS多线程篇之GCD
引言上一篇文章介绍了iOS中用于实现多线程的NSThread相关API,然而该框架需要手动管理线程的生命周期,使用起来很不方便。本篇将介绍iOS中最为出色的多线程框架GCD(Grand Central Dispatch)。事实上,GCD的作用远不止多线程操作,本篇将只介绍GCD较为常规的一些用法。GCD是一个苹果公司用C语言开发的框架,好在iOS6.0以后,GCD对象被纳入了ARC的管理范围,因此不原创 2016-03-23 09:36:39 · 1117 阅读 · 1 评论 -
iOS静态库制作
QA静态库与动态库的区别静态库:在链接的时候被完整地链接到可执行文件中,同一个静态库在不同程序中使用,每个程序都得导入一次,打包时也会被包进去,使其成为程序的一部分。 动态库:程序运行的时候由系统动态地加载进内存,供程序调用,本身并不是程序的一部分。(iOS只支持系统的动态库)静态库/动态库形式静态库: .a 和 .framework 动态库: .dylib 和 .framework原创 2016-10-14 11:17:26 · 1152 阅读 · 0 评论 -
和block循环引用说再见
to be block? or to be delegate? 这是一个钻石恒久远的问题。个人在编码中暂时没有发现两者不能通用的地方,习惯上更偏向于block,没有什么很深刻的原因,只是认为block回调写起来更便捷,直接在上下文中写block回调使得代码结构更清晰,可读性更强。而delegate还需要申明protocol接口,设置代理对象,回调方法与上下文环境不能很好契合,维护起来没有block方原创 2016-07-22 10:29:09 · 3725 阅读 · 1 评论 -
NSString内存管理
NSString的内存优化OC中的NSString不论是在编译时还是在运行时都做了很多的优化,并不同于普通的对象,它是一个非常复杂的存在。原创 2016-07-26 14:34:21 · 3181 阅读 · 0 评论 -
iOS配置FFmpeg框架
一、下载一个Perl写的脚本文件,该脚本在执行编译脚本的时候需要依赖。https://github.com/libav/gas-preprocessor解压下载好的文件,里面有一个 gas-preprocessor.pl 脚本文件,需要将该文件copy到 /usr/bin 目录下。终端执行:sudo cp -f /Users/lotheve/Desktop/gas-preprocessor-mas原创 2016-05-27 16:34:53 · 2528 阅读 · 2 评论 -
IOS开发—多线程之NSOperation介绍
介绍IOS开发中用到的多线程处理方法:结合NSOperation及NSOperationQueue实现异步执行操作。原创 2015-03-14 15:11:11 · 880 阅读 · 0 评论 -
iOS开发-beginUpdates && endUpdates用法
本篇主要介绍使用beginUpdates和endUpdates方法对UITableView的Cell进行批量操作更新。原创 2016-03-27 21:02:05 · 10152 阅读 · 1 评论 -
IOS开发—CATransform3D介绍
最近项目中用到CATransform3D实现动画效果,感觉有点力不从心,对CALayer的一些属性模棱两可,故做了一番整理。首先要知道的几个概念:1、三维坐标系:视角垂直与屏幕而言,x轴向右,y轴向下,z轴垂直屏幕向外。 2、坐标系原点:ios默认以图层的左上角点为坐标原点,osx默认以图层左下角为坐标原点。注意是默认,因为图层的坐标原点是可以设置的,下面会介绍。3、view于layer的关系:对原创 2015-10-27 18:35:37 · 3814 阅读 · 0 评论 -
IOS开发—跳转到系统设置以及其他应用
跳转到系统设置跳转到系统设置首页NSURL *url = [NSURL URLWithString:@"prefs:root="];if ([[UIApplication sharedApplication] canOpenURL:url]){ [[UIApplication sharedApplication] openURL:url];}跳转到某个具体的系统设置项界面以跳转到wi原创 2016-02-29 20:48:03 · 1251 阅读 · 0 评论 -
IOS开发—Core Animation核心动画介绍
核心动画简介一简单介绍二使用步骤三CAAnimation四属性说明基础动画CABasicAnimation一简单介绍二属性介绍关键帧动画CAKeyframeAnimation一简单介绍二属性介绍转场动画CATransition一简单介绍二属性介绍组动画CAAnimationGroup一简单介绍二属性介绍UIView封装动画一常规动画二转场动画一三转场动画二补原创 2015-09-08 10:09:01 · 981 阅读 · 0 评论 -
IOS开发—CAShapeLayer与CAGradientLayer
CAShapeLayer介绍1、CAShapeLayer是一种特殊的层,可以在上面渲染图形。 2、CAShapeLayer继承自CALayer,可使用CALayer的所有属性。 3、CAShapeLayer需要和贝塞尔曲线配合使用才有意义,贝塞尔曲线为其提供渲染的图形。 4、使用CAShapeLayer与贝塞尔曲线可以实现不再view的drawRect方法中画出一些想要的图形。 关于CASh原创 2015-11-06 19:36:37 · 2456 阅读 · 0 评论 -
IOS开发—系统定位
说明涉及到的框架核心定位框架CoreLocation,需要导入头文件 #import <CoreLocation/CoreLocation.h> 主要涉及的类有定位管理器CLLocationManager、位置类CALocation、地理信息编码类CLGeocoder、地标类CLPlacemark 以及 协议CLLocationManagerDelegate。 CLLocationMa原创 2015-10-06 21:05:37 · 2483 阅读 · 0 评论 -
IOS开发—视图控制器左边缘右滑pop出栈
IOS视图控制器左边缘右滑pop出栈IOS7.0之后,苹果优化了一个小功能,就是对于UINavagationController堆栈里的UIViewController,只要轻轻在视图控制器的左边缘右滑一下,该视图控制器就会pop出栈(前提当然是对于非根视图控制器而言)。实现方法很简单,一句话搞定:self.navigationController.interactivePopGestur原创 2015-06-13 10:47:56 · 3006 阅读 · 0 评论 -
IOS开发—IOS自定义任意位置右滑POP视图控制器
本篇介绍通过添加手势的方法实现IOS当前屏幕任意位置(非指定左边缘)右滑pop视图控制器出栈。原创 2015-06-12 21:02:24 · 1900 阅读 · 0 评论 -
IOS开发—UITableViewCell的四种类型
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell; switch (indexPath.row) { case 0: { ce原创 2015-06-10 16:24:15 · 4209 阅读 · 0 评论 -
IOS开发—调用系统拨打短话功能
IOS开发—调用系统拨打短话功能原创 2015-05-22 22:04:45 · 937 阅读 · 0 评论 -
IOS开发—iOS视频拍摄与压缩
转载自:http://blog.csdn.net/lookyou111/article/details/25625609最近在学习使用iOS自带的API进行视频压缩,所以就从视频拍摄开始学起,因为曾经想直接对已有视频进行压缩,无奈总是失败,经研究发现不可以直接调用PC中的视频文件进行压缩,否则直接AVAssetExportSessionStatusFailed。所以只可以用真机转载 2015-05-12 20:08:00 · 2437 阅读 · 0 评论