学习笔记
shn-1153
这个作者很懒,什么都没留下…
展开
-
1.UI
storyboard文件的认识用来描述软件界面默认情况下,程序一启动就会加载Main.storyboard加载storyboard时,会首先创建和显示箭头所指的控制器界面IBAction和IBOutletIBAction:本质就是void能让方法具备连线的功能IBOutlet能让属性具备连线的功能storyboard连线容易出现的问题连接的方法代码被删掉,但是连线没有去掉可能会出现原创 2016-02-09 10:56:00 · 319 阅读 · 0 评论 -
16.copy与mutableCopy
实现拷贝的方法copy 只会产生不可变的副本对象(比如NSString)mutableCopy 只会产生可变的副本对象(比如NSMutableString) 自定义对象的拷贝原创 2016-02-19 21:04:42 · 220 阅读 · 0 评论 -
27.UIMenuController的介绍
UIMenuController的示例UIMenuController须知默认情况下, 有以下控件已经支持UIMenuController UITextFieldUITextViewUIWebView-让其他控件也支持UIMenuController(比如UILabel)自定义UILabel- (void)setup{self.userInteractionEnabled = Y原创 2016-03-30 13:32:28 · 213 阅读 · 0 评论 -
20.网络
网络HTTP请求GET请求NSString *urlStr = @"http://xxxxx.com";urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSURL *url = [NSURL URLWithString:urlStr];// 请求NSURLRequest *r原创 2016-03-19 09:35:44 · 271 阅读 · 0 评论 -
22.文件解压缩
使用第三方库 SSZipArchive 方法[SSZipArchive createZipFileAtPath:<#(NSString *)#> withFilesAtPaths:<#(NSArray *)#>];[SSZipArchive createZipFileAtPath:<#(NSString *)#> withContentsOfDirectory:<#(NSString *)#>原创 2016-03-19 10:47:24 · 253 阅读 · 0 评论 -
17.指针与数组
指针p的加减法运算指针p + N p里面存储的地址值 + N * 指针所指向类型的占用字节数指针p - N p里面存储的地址值 - N * 指针所指向类型的占用字节数数组名存储的是数组首元素的地址等价于:一个指向数组首元素的指针数组名 + 1 的跨度:数组首元素的占用字节数其他结论&num + 1的跨度:num的占用字节数原创 2016-02-22 19:28:03 · 255 阅读 · 0 评论 -
23.获取文件的MIMEType
第一种- (NSString *)MIMEType{if (![[NSFileManager defaultManager] fileExistsAtPath:self]) { return nil;}CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (_原创 2016-03-20 10:02:51 · 349 阅读 · 0 评论 -
14.RunLoop的理解
什么是RunLoop从字面意思看:运行循环,跑圈其实它内部就是do-while 循环,在这个循环内部不断地处理各种任务(比如Source,Timer,Observer)一个线程对应一个RunLoop,主线程的RunLoop默认已经启动,子线程的RunLoop得手动启动(调用run方法)RunLoop只能选择一个Model启动,如果当前Model中没有任何Source,Timer,Observ原创 2016-02-16 21:41:47 · 513 阅读 · 0 评论 -
21.文件下载
小文件下载如果文件比较小,下载方式会比较多直接用 NSData 的 dataWithContentsOfURL 方法NSURL *url = [NSURL URLWithString:@"sss"];NSData *data = [NSData dataWithContentsOfURL:url];利用 NSURLConnection 发送一个HTTP请求//方法一: NSURL *url原创 2016-03-19 10:15:40 · 258 阅读 · 0 评论 -
24.NSURLConnection与RunLoop
NSURLConnection *conn = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"qq"]] delegate:self];默认会开启一个子线程请求数据如果把请求放在 `dispatch_async` 中代理无返回数据 dispatch_asy原创 2016-03-20 11:45:09 · 243 阅读 · 0 评论 -
25.NSURLSession的使用
get请求1.第一种方法// 获得NSURLSession对象NSURLSession *session = [NSURLSession sharedSession];// 创建任务NSURLSessionDataTask *task = [session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWit原创 2016-03-24 15:16:41 · 227 阅读 · 0 评论 -
26.AFNetworking的使用
get/post请求处理一.第一种方法// AFHTTPRequestOperationManager内部包装了NSURLConnectionAFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; NSDictionary *params = @{@"username" : @"aaa"};[mg原创 2016-03-24 15:37:47 · 236 阅读 · 0 评论 -
28.如何监听键盘最右下角按钮的点击
1.通过代理/** * 监听键盘最右下角按钮的点击(return key,比如换行,完成等) */- (BOOL)textFieldShouldReturn:(UITextField *)textField { if (textField.hasText) { //do something } return YES;}2.重写 insertText 方法 也原创 2016-04-09 22:14:19 · 640 阅读 · 0 评论 -
29.获取文件缓存大小
第一种方法NSFileManager *manger = [NSFileManager defaultManager];NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];NSString *cachePath = [caches原创 2016-04-10 15:35:12 · 320 阅读 · 0 评论 -
15.static的作用
static的作用:1.修饰局部变量让局部变量只初始化一次局部变量在程序中只有一份内存并不会改变局部变量的作用域,仅仅是改变了局部变量的生命周期(只到程序结束,这个局部变量才会销毁) //当a不用static修饰时- (void) test {int a = 0;a ++;NSLog(@"a====%d",a);}[self test]; // a === 1//当a用stat原创 2016-02-18 21:07:52 · 265 阅读 · 0 评论 -
13.控制器的父子关系
1.控制器父子关系的建立原则1.1 如果2个控制器的view是父子关系(不管是直接还是间接的父子关系),那么这2个控制器也应该为父子关系[a.view addSubview:b.view];[a addChildViewController:b];// 或者[a.view addSubview:otherView];[otherView addSubbiew.b.view];[a ad原创 2016-02-17 20:59:40 · 298 阅读 · 0 评论 -
3.定时任务处理
定时任务方法1:performSelector// 1.5s后自动调用self的hideHUD方法[self performSelector:@selector(hideHUD) withObject:nil afterDelay:1.5];方法2:GCDdispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC原创 2016-02-09 11:13:05 · 263 阅读 · 0 评论 -
5.Xib和storyboard对比
共同点:都用来描述软件界面都用Interface Builder工具来编辑本质都是转换成代码去创建控件不同点:Xib是轻量级的,用来描述局部的UI界面Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系Xib的加载方法1 NSArray *views = [[NSBundle mainBundle] loadNibNamed:@”xib文件名原创 2016-02-09 12:11:25 · 298 阅读 · 0 评论 -
6.UIScrollView与UIPageControl的认识
UIScrollView的属性@property(nonatomic) CGPoint contentOffset; 这个属性用来表示UIScrollView滚动的位置(其实就是内容左上角与scrollView左上角的间距值)@property(nonatomic) CGSize contentSize; 这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)@pro原创 2016-02-10 11:44:38 · 377 阅读 · 0 评论 -
7.屏幕适配
1. 屏幕适配的发展历史iPhone3GS/iPhone4 没有屏幕适配可言全部用frame,bounds,center进行布局很多这样的现象:坐标值,宽度高度值全部写死UIButton *btn = [[UIButton alloc]init];btn.frame = CGRectMake(0,0,320 - 20,480 - 30);iPad出现,iPhone横屏出现Autores原创 2016-02-11 11:01:01 · 283 阅读 · 0 评论 -
8.Masonry的使用方法
Masonry使用步骤添加Masonry文件夹的所有源代码到项目中添加2个宏、导入主头文件 只要添加了这个宏'#define MAS_SHORTHAND',就不用带mas_前缀只要添加了这个宏 '#define MAS_SHORTHAND_GLOBALS',equalTo就等价于mas_equalTo这个头文件一定要放在上面两个宏的后面import "Masonry.h"添加约束的方法/原创 2016-02-11 13:01:49 · 350 阅读 · 0 评论 -
9.UITableView的设置
tableView性能优化 - cell的循环利用方法1/** * 什么时候调用:每当有一个cell进入视野范围内就会调用 */ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ // 0.重用标识 // 被stati原创 2016-02-13 13:55:43 · 354 阅读 · 0 评论 -
2.UIView的认识
UIView的常见属性NSArray *subviews 所有的子控件数组元素的顺序决定着子控件的显示层级顺序(下标越大的,越显示在上面)UIView的常见方法addSubview: 添加一个子控件使用这个方法添加的子控件会被塞到subviews数组的最后面可以使用下面的方法调整子控件在subview数组中的顺序// 将子控件view插入到subviews数组的index位置-原创 2016-02-09 11:02:39 · 242 阅读 · 0 评论 -
10.UITableView的刷新数据方法
数据刷新方法重新刷新屏幕上的所有cell[self.tableView reloadData];刷新特定行的cell[self.tableView reloadRowsAtIndexPaths:@[ [NSIndexPath indexPathForRow:0 inSection:0],[NSIndexPath indexPathForRow:1 inSection:0]]原创 2016-02-13 15:36:24 · 552 阅读 · 0 评论 -
11.UIView的transform属性
transform:形变属性,能完成的功能:平移、缩放、旋转平移self.tempView.transform = CGAffineTransformMakeTranslation(-100, 100);缩放self.tempView.transform = CGAffineTransformMakeScale(0.5, 0.5);旋转self.tempView.transform = CG原创 2016-02-14 14:43:19 · 226 阅读 · 0 评论 -
4.模型与字典的对比
模型什么是模型? 专门用来存放数据的对象一般都是一些直接继承自NSObject的纯对象内部会提供一些属性来存放数据用模型取代字典的好处使用字典的坏处一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编辑器没有智能提示,需要手敲 dict[@”name”] = @”Jack”; NSString *name = dict[@”name”];手敲字符串key原创 2016-02-09 12:01:32 · 454 阅读 · 0 评论 -
12.代理、通知、KVC\KVO
代理代理设计模式的作用: 1.A对象监听B对象的一些行为,A成为B的代理2.B对象想告诉A对象一些事情,A成为B的代理代理设计模式的总结 如果你想监听别人的一些行为,那么你就要成为别人的代理如果你想告诉别人一些事情,那么就让别人成为你的代理代理设计模式的开发步骤 1.拟一份协议(协议名字的格式:控件名 + Delegate),在协议里面声明一些代理方法(一般代理方法都是@option原创 2016-02-14 17:39:16 · 272 阅读 · 0 评论 -
18.ios中的多线程
iOS中多线程的实现方案1. NSThread一个NSThread对象就代表一条线程NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];[thread start];// 线程一启动,就会在线程thread中执行self的run方法主线程相关用法+ (NSTh原创 2016-03-03 21:25:58 · 208 阅读 · 0 评论 -
19.如何修改UITextField的placeholder颜色
修改UITextField的placeholder颜色方法一://使用属性@property(nonatomic,copy) NSAttributedString *attributedPlaceholder; // 文字属性 NSMutableDictionary *attrs = [NSMutableDictionary dictionary];attrs[NSForegroundC原创 2016-03-03 21:37:16 · 293 阅读 · 0 评论 -
23.Quartz2D总结
一.Quartz2D简介Quartz2D是二维的绘图引擎(经包装的函数库,方便开发者使用。也就是说苹果帮我们封装了一套绘图的函数库),用Quartz2D写的同一份代码,既可以运行在iphone上又可以运行在mac上,可以跨平台开发,开发中比较常用的是截屏/裁剪/自定义UI控件,Quartz2D在iOS开发中的价值就是自定义UI控件.二.绘图简介1.绘图的步骤: 1.获取上下文原创 2016-08-16 16:18:29 · 406 阅读 · 0 评论