摘要: 1 //1.获取图形上下文 2 CGContextRef ctx=UIGraphicsGetCurrentContext(); 3 //2.绘图(画线) 4 //设置起点 5 CGContextMoveToPoint(ctx, 20, 20); 6 //设置终点 7 CGContextAddLine 阅读全文
posted @ 2019-02-05 21:22 Van·Zhang 阅读(333) 评论(0) 推荐(0)
摘要: 一、什么是Quartz2D Quartz 2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成的工作: 绘制图形 : 线条\三角形\矩形\圆\弧等 绘制文字 绘制\生成图片(图像) 读取\生成PDF 截图\裁剪图片 自定义UI控件 二、Quartz2D在iOS开发中的价值 为 阅读全文
posted @ 2019-02-05 21:21 Van·Zhang 阅读(328) 评论(0) 推荐(0)
摘要: 一、画直线 代码: //// YYlineview.m// 03-画直线//// Created by apple on 14-6-9.// Copyright (c) 2014年 itcase. All rights reserved.// #import "YYlineview.h" @impl 阅读全文
posted @ 2019-02-05 21:21 Van·Zhang 阅读(211) 评论(0) 推荐(0)
摘要: 一、画文字 代码: //// YYtextview.m// 04-写文字//// Created by 孔医己 on 14-6-10.// Copyright (c) 2014年 itcast. All rights reserved.// #import "YYtextview.h" @imple 阅读全文
posted @ 2019-02-05 21:21 Van·Zhang 阅读(186) 评论(0) 推荐(0)
摘要: 1 - (void)drawRect:(CGRect)rect 2 { 3 //获取上下文 4 CGContextRef ctx=UIGraphicsGetCurrentContext(); 5 //绘图 6 //第一条线 7 CGContextMoveToPoint(ctx, 20, 100); 阅读全文
posted @ 2019-02-05 21:21 Van·Zhang 阅读(254) 评论(0) 推荐(0)
摘要: iOS开发UI篇—Quartz2D使用(矩阵操作) 一、关于矩阵操作 1.画一个四边形 通过设置两个端点(长和宽)来完成一个四边形的绘制。 代码: 1 - (void)drawRect:(CGRect)rect 2 { 3 //画四边形 4 //获取图形上下文 5 CGContextRef ctx= 阅读全文
posted @ 2019-02-05 21:21 Van·Zhang 阅读(324) 评论(0) 推荐(0)
摘要: 一、使用Quartz2D完成图片剪切 1.把图片显示在自定义的view中 先把图片绘制到view上。按照原始大小,把图片绘制到一个点上。 代码: 1 - (void)drawRect:(CGRect)rect 2 { 3 UIImage *image2=[UIImage imageNamed:@"m 阅读全文
posted @ 2019-02-05 21:21 Van·Zhang 阅读(350) 评论(0) 推荐(0)
摘要: 一、通过slider控制圆的缩放 1.实现过程 新建一个项目,新建一个继承自UIview的类,并和storyboard中自定义的view进行关联。 界面搭建,如图: 代码示例: YYViewController.m文件 1 // 2 // YYViewController.m 3 // 04-对圆进 阅读全文
posted @ 2019-02-05 21:21 Van·Zhang 阅读(271) 评论(0) 推荐(0)
摘要: iOS开发UI篇—控制器的View的创建 一、6种创建控制器View的方式 1 #import "NJAppDelegate.h" 2 #import "NJViewController.h" 3 /* 4 1.没有同名xib情况下 5 2.通过 storyboard 创建 6 3.有指定xib情况 阅读全文
posted @ 2019-02-05 21:20 Van·Zhang 阅读(448) 评论(0) 推荐(0)
摘要: iOS开发UI篇—Modal简单介绍 一、简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为⽌ 二、代码说明 新建一个项目,在Application的代理中 阅读全文
posted @ 2019-02-05 21:20 Van·Zhang 阅读(455) 评论(0) 推荐(0)
摘要: 1.MRC是什么,有什么用? 在苹果开发中,我们是没有垃圾回收机制的。所以在ARC推出之前,我们苹果开发程序员需要通过手动代码的形式尽量严密的管理我们的App的内存; 2.如何运用MRC管理内存? 1)实际关键字: 无论是ARC还是MRC管理内存都涉及到几个关键字符: 使用alloc、new、cop 阅读全文
posted @ 2019-02-05 21:20 Van·Zhang 阅读(772) 评论(0) 推荐(0)
摘要: 一、简单介绍 UITabBarController和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例子就是QQ、微信等应⽤。 二、UITabBarController的使用 1.使用步骤: (1)初始 阅读全文
posted @ 2019-02-05 21:19 Van·Zhang 阅读(3626) 评论(0) 推荐(0)
摘要: iOS开发UI篇—ios应用数据存储方式(偏好设置) 一、简单介绍 很多iOS应用都支持偏好设置,比如保存用户名、密码、字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用都有个NSUserDefaults实例,通过它来存取偏好设置。比如,保存用户名、字体大小、是否自动登 阅读全文
posted @ 2019-02-05 21:19 Van·Zhang 阅读(379) 评论(0) 推荐(0)
摘要: iOS开发UI篇—ios应用数据存储方式(归档) 一、简单说明 在使用plist进行数据存储和读取,只适用于系统自带的一些常用类型才能用,且必须先获取路径相对麻烦; 偏好设置(将所有的东西都保存在同一个文件夹下面,且主要用于存储应用的设置信息) 归档:因为前两者都有一个致命的缺陷,只能存储常用的类型 阅读全文
posted @ 2019-02-05 21:19 Van·Zhang 阅读(311) 评论(0) 推荐(0)
摘要: iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 一、实现效果 说明:点击随机按钮,能够自动选取,下方数据自动刷新。 二、实现思路 1.picker view的有默认高度为162,不可修改。 2.显示数据,需要设置数据源,也有两种方式(成为数据源,遵守协议) 3.实现数据源里面 阅读全文
posted @ 2019-02-05 21:19 Van·Zhang 阅读(417) 评论(0) 推荐(0)
摘要: ● 沙盒根目录:NSString *home = NSHomeDirectory(); ● Documents:(2种⽅方式) ● 利用沙盒根目录拼接”Documents”字符串NSString *home = NSHomeDirectory();NSString *documents = [hom 阅读全文
posted @ 2019-02-05 21:19 Van·Zhang 阅读(328) 评论(0) 推荐(0)
摘要: iOS开发UI篇—APP主流UI框架结构 一、简单示例 说明:使用APP主流UI框架结构完成简单的界面搭建 搭建页面效果: 二、搭建过程和注意点 1.新建一个项目,把原有的控制器删除,添加UITabBarController控制器作为管理控制器 2.对照界面完成搭建 3.注意点: (1)隐藏工具条: 阅读全文
posted @ 2019-02-05 21:18 Van·Zhang 阅读(852) 评论(0) 推荐(0)
摘要: iOS开发UI篇—UITabBarController生命周期(使用storyoard搭建) 一、UITabBarController在storyoard中得搭建 1.新建一个项目,把storyboard中默认的控制器删除,拖UITab Bar Controller。 2.创建viewcontrol 阅读全文
posted @ 2019-02-05 21:18 Van·Zhang 阅读(486) 评论(0) 推荐(0)
摘要: 一、前导程序 新建一个项目,在主控制器文件中实现以下几行代码,就能轻松的完成图片在视图中的平铺。 1 #import "YYViewController.h" 2 3 @interface YYViewController () 4 5 @end 6 7 @implementation YYView 阅读全文
posted @ 2019-02-05 21:17 Van·Zhang 阅读(329) 评论(0) 推荐(0)
摘要: 一、简单说明 在程序开发中,有时候需要截取屏幕上的某一块内容,比如捕鱼达人游戏。如图: 完成截屏功能的核心代码:- (void)renderInContext:(CGContextRef)ctx;调用某个view的layer的renderInContext:方法即可 二、代码示例 storyboar 阅读全文
posted @ 2019-02-05 21:17 Van·Zhang 阅读(282) 评论(0) 推荐(0)
摘要: 一、代码示例 1.需要先导入FMDB框架和头文件,由于该框架依赖于libsqlite库,所以还应该导入该库。 2.代码如下: 先插入数据,之后查询结果,打印如下: 3.代码说明 有了一个队列对象,它的内部自动就拥有一个数据库对象,且数据库的操作是线程安全的。 二、事务 事务,没有事务的话会出现问题。 阅读全文
posted @ 2019-02-05 21:01 Van·Zhang 阅读(303) 评论(0) 推荐(0)
摘要: 一、简单说明 1.什么是FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的方式封装了SQLite的C语言API 2.FMDB的优点 使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码 对比苹果自带的Core Data框架,更加轻量级和灵活 提供了多线程安全的数据库操作方法, 阅读全文
posted @ 2019-02-05 21:00 Van·Zhang 阅读(451) 评论(0) 推荐(0)
摘要: 一、简单说明 1.打开数据库 int sqlite3_open( const char *filename, // 数据库的文件路径 sqlite3 **ppDb // 数据库实例 ); 2.执行任何SQL语句 int sqlite3_exec( sqlite3*, // 一个打开的数据库实例 co 阅读全文
posted @ 2019-02-05 20:59 Van·Zhang 阅读(395) 评论(0) 推荐(0)
摘要: 一、简单说明 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件。 导入头文件,可以使用库中的函数(是纯C语言的) 二、具体说明 新建一个项目,在项目的主界面中放四个按钮(分别是,增加、删除、修改、查询)。 1.sqlite3_open(<#const ch 阅读全文
posted @ 2019-02-05 20:58 Van·Zhang 阅读(645) 评论(2) 推荐(1)
摘要: 一、示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: 2.新建一个工具类,用来管理模型 工具类中的代码设计如下: YYPersonTool.h文件 YYPersonTool.m文件 3.在storyboard中,删除原有的控制器,放一个导航控 阅读全文
posted @ 2019-02-05 20:58 Van·Zhang 阅读(656) 评论(0) 推荐(0)
摘要: 一、使用代码的方式批量添加(导入)数据到数据库中 1.执行SQL语句在数据库中添加一条信息 插入一条数据的sql语句: 点击run执行语句之后,刷新数据 2.在ios项目中使用代码批量添加多行数据示例 代码示例: 作用:生成200条相应的sql插入语句 打印结果为: 使用文本编辑器,打开生成的sql 阅读全文
posted @ 2019-02-05 20:57 Van·Zhang 阅读(549) 评论(0) 推荐(0)
摘要: 一、SQL语句 如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句 1.什么是SQL SQL(structured query language):结构化查询语言 SQL是一种对关系型数据库中的数据进行定义和操作的语言 SQL语言简洁,语法简单,好学好用 2.什么是SQL语句 使用S 阅读全文
posted @ 2019-02-05 20:56 Van·Zhang 阅读(1001) 评论(0) 推荐(0)
摘要: 一、离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等。 说明:离线缓存一般都是把数据保存到项目的沙盒中。有以下几种方式 (1)归档:NSCodeing、NSKeyedArchiver (2)偏好设置:NSUserDefaults (3)Plist存储:writeTo 阅读全文
posted @ 2019-02-05 20:55 Van·Zhang 阅读(2342) 评论(0) 推荐(1)
摘要: 一、NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法、请求头、请求体.... (3)NSMutableURLRequest:NSURLRequest的子类 (4)NSURLCo 阅读全文
posted @ 2019-02-05 20:54 Van·Zhang 阅读(578) 评论(0) 推荐(0)
摘要: 一、GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",s 阅读全文
posted @ 2019-02-05 20:53 Van·Zhang 阅读(591) 评论(0) 推荐(0)
摘要: 一、简单说明 1.说明 在开发应用的时候,数据的安全性至关重要,而仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题。 如:可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据 “青花瓷”软件 因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交 2.常见 阅读全文
posted @ 2019-02-05 20:53 Van·Zhang 阅读(575) 评论(0) 推荐(0)
摘要: 说明:apache tomcat服务器必须占用8080端口 一、URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址、位置,互联网上的每个资源都有一个唯一的URL 2.URL中常见的 阅读全文
posted @ 2019-02-05 20:52 Van·Zhang 阅读(736) 评论(0) 推荐(0)
摘要: 一、简单说明 说明:提前下载好相关软件,且安装目录最好安装在全英文路径下。如果路径有中文名,那么可能会出现一些莫名其妙的问题。 提示:提前准备好的软件 apache-tomcat-6.0.41.tar eclipse-jee-kepler-SR2-macosx-cocoa-x86_64.tar.gz 阅读全文
posted @ 2019-02-05 20:51 Van·Zhang 阅读(784) 评论(0) 推荐(0)
摘要: 一、为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ、微博、网易新闻、优酷、百度地图 (2)只有通过网络跟外界进行数据交互、数据更新,应用才能保持新鲜、活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死 阅读全文
posted @ 2019-02-05 20:50 Van·Zhang 阅读(415) 评论(0) 推荐(0)
摘要: 一、实现一个简单的tableView显示效果 实现效果展示: 代码示例(使用以前在主控制器中进行业务处理的方式) 1.新建一个项目,让控制器继承自UITableViewController。 2.处理storyboard中得界面,如下: 3.根据plist文件,字典转模型 新建一个类,继承自NSOb 阅读全文
posted @ 2019-02-05 20:49 Van·Zhang 阅读(343) 评论(0) 推荐(0)
摘要: 一、NSOperation简介 1.简单说明 NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现多线程编程 NSOperation和NSOperationQueue实现多线程的具体步骤: (1)先将需要执行的操作封装到一个NSOperation对象 阅读全文
posted @ 2019-02-05 20:48 Van·Zhang 阅读(265) 评论(0) 推荐(0)
摘要: 一、并发数 (1)并发数:同时执⾏行的任务数.比如,同时开3个线程执行3个任务,并发数就是3 (2)最大并发数:同一时间最多只能执行的任务的个数。 (3)最⼤大并发数的相关⽅方法 - (NSInteger)maxConcurrentOperationCount;- (void)setMaxConcu 阅读全文
posted @ 2019-02-05 20:48 Van·Zhang 阅读(262) 评论(0) 推荐(0)
摘要: 一、延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) withObject:nil afterDelay:2.0]; // 2秒后再调用self的run方法 (2)使用GCD函数 dispa 阅读全文
posted @ 2019-02-05 20:47 Van·Zhang 阅读(333) 评论(0) 推荐(0)
摘要: 一、主队列介绍 主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放到主线程中执行。 提示:如果把任务放到主队列中进行处理,那么不论处理函数是异步的还是同步的都不会开启新的线程。 获取主队列的方式: dispatch_queue_t queue=disp 阅读全文
posted @ 2019-02-05 20:46 Van·Zhang 阅读(251) 评论(0) 推荐(0)
摘要: 一、简单介绍 线程的创建: self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil]; 说明:创建线程有多种方式,这里不做过多的介绍。 线程的开启: [self.thread start 阅读全文
posted @ 2019-02-05 20:45 Van·Zhang 阅读(321) 评论(0) 推荐(0)
摘要: 一、简单介绍 1.什么是GCD? 全称是Grand Central Dispatch,可译为“牛逼的中枢调度器” 纯C语言,提供了非常多强大的函数 2.GCD的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自动利用更多的CPU内核(比如双核、四核) GCD会自动管理线程的生命周期(创 阅读全文
posted @ 2019-02-05 20:44 Van·Zhang 阅读(503) 评论(0) 推荐(0)
摘要: 一、简单说明 线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务 线程间通信常用方法 - (void)performSelectorOnMainThread:(SEL 阅读全文
posted @ 2019-02-05 20:43 Van·Zhang 阅读(1629) 评论(0) 推荐(0)
摘要: 一、多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象、同一个变量、同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 示例一: 示例二: 问题代码: 打印结果: 二、安全隐患分析 三、如何解决 互斥锁使用格 阅读全文
posted @ 2019-02-05 20:42 Van·Zhang 阅读(398) 评论(0) 推荐(0)
摘要: 一、创建和启动线程简单说明 一个NSThread对象就代表一条线程 创建、启动线程 (1) NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; [thread st 阅读全文
posted @ 2019-02-05 20:41 Van·Zhang 阅读(880) 评论(0) 推荐(0)
摘要: 一、进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ、Xcode,系统就会分别启动2个进程 通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程 1个进程要想执行任务,必须得有线程(每 阅读全文
posted @ 2019-02-05 20:40 Van·Zhang 阅读(224) 评论(0) 推荐(0)
摘要: 一、简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息、绘图状态 决定绘制的输出目标(绘制到什么地方去?)(输出目标可以是PDF文件、Bitmap或者显示器的窗口上) 相同的一套绘图序列,指定不同的Graphics Co 阅读全文
posted @ 2019-02-05 20:38 Van·Zhang 阅读(298) 评论(0) 推荐(0)
摘要: 一、实现思路 Quartz2D最大的用途在于自定义View(自定义UI控件),当系统的View不能满足我们使用需求的时候,自定义View。 使用Quartz2D自定义View,可以从模仿系统的ImageView的使用开始。 需求驱动开发:模仿系统的imageview的使用过程 1.创建 2.设置图片 阅读全文
posted @ 2019-02-05 20:37 Van·Zhang 阅读(353) 评论(0) 推荐(0)
摘要: 一、UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIView beginAnimati 阅读全文
posted @ 2019-02-05 20:36 Van·Zhang 阅读(361) 评论(0) 推荐(0)
摘要: 一、转场动画简单介绍 CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果。iOS比Mac OS X的转场动画效果少一点 UINavigationController就是通过CATransition实现了将控制器的视图推入屏幕的动画效果 属性解析: type:动画过 阅读全文
posted @ 2019-02-05 20:35 Van·Zhang 阅读(362) 评论(0) 推荐(0)
摘要: 一、简单介绍 是CApropertyAnimation的子类,跟CABasicAnimation的区别是:CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue),而CAKeyframeAnimation会使用一个NSArray保存这些数值 属性解析: v 阅读全文
posted @ 2019-02-05 20:33 Van·Zhang 阅读(539) 评论(0) 推荐(0)
摘要: 一、简单介绍 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 随着动画的进行,在长度为duration的持续时间内,keyPath相应属性的值从fromValue渐渐地变为toValue 如 阅读全文
posted @ 2019-02-05 20:32 Van·Zhang 阅读(289) 评论(0) 推荐(0)
摘要: 一、简单介绍 Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍。也就是说,使用少量的代码就可以实现非常强大的功能。 Core Animation是跨平台的,可以用在Mac OS X和iOS平台。 Core Anim 阅读全文
posted @ 2019-02-05 20:29 Van·Zhang 阅读(235) 评论(0) 推荐(0)
摘要: 一、第一种方式 1.简单说明 以前想要在view中画东西,需要自定义view,创建一个类与之关联,让这个类继承自UIView,然后重写它的DrawRect:方法,然后在该方法中画图。 绘制图形的步骤: (1)获取上下文 (2)绘制图形 (3)渲染图形 如果在layer上画东西,与上面的过程类似。 代 阅读全文
posted @ 2019-02-05 20:28 Van·Zhang 阅读(334) 评论(0) 推荐(0)
摘要: 一、position和anchorPoint 一、position和anchorPoint 一、position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设置CAL 阅读全文
posted @ 2019-02-05 20:27 Van·Zhang 阅读(480) 评论(0) 推荐(0)
摘要: 一、添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控制器view的layer上) 二、添加一个显示图片的图层 代码示例: 执行效果: 说明:在第27行设置需要显示的图片,注意,这里用的是UIImag 阅读全文
posted @ 2019-02-05 20:26 Van·Zhang 阅读(320) 评论(0) 推荐(0)
摘要: 一、简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对 阅读全文
posted @ 2019-02-05 20:24 Van·Zhang 阅读(234) 评论(0) 推荐(0)