自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 30. UIScrollView内部子控件添加约束的注意点

30. UIScrollView内部子控件添加约束的注意点:子控件的尺寸不能通过UIScrollView来计算,可以考虑通过以下方式计算 可以设置固定值(width==100,height==300)可以相对于UIScrollView以外的其他控件来计算尺寸UIScrollView的frame应该通过子控件以外的其他控件来计算UIScrollView的contentSize通过子控件来计算

2017-01-03 19:29:17 291

原创 23.Quartz2D总结

一.Quartz2D简介Quartz2D是二维的绘图引擎(经包装的函数库,方便开发者使用。也就是说苹果帮我们封装了一套绘图的函数库),用Quartz2D写的同一份代码,既可以运行在iphone上又可以运行在mac上,可以跨平台开发,开发中比较常用的是截屏/裁剪/自定义UI控件,Quartz2D在iOS开发中的价值就是自定义UI控件.二.绘图简介1.绘图的步骤: 1.获取上下文

2016-08-16 16:18:29 399

原创 29.获取文件缓存大小

第一种方法NSFileManager *manger = [NSFileManager defaultManager];NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];NSString *cachePath = [caches

2016-04-10 15:35:12 316

原创 28.如何监听键盘最右下角按钮的点击

1.通过代理/** * 监听键盘最右下角按钮的点击(return key,比如换行,完成等) */- (BOOL)textFieldShouldReturn:(UITextField *)textField { if (textField.hasText) { //do something } return YES;}2.重写 insertText 方法 也

2016-04-09 22:14:19 634

原创 27.UIMenuController的介绍

UIMenuController的示例UIMenuController须知默认情况下, 有以下控件已经支持UIMenuController UITextFieldUITextViewUIWebView-让其他控件也支持UIMenuController(比如UILabel)自定义UILabel- (void)setup{self.userInteractionEnabled = Y

2016-03-30 13:32:28 212

原创 26.AFNetworking的使用

get/post请求处理一.第一种方法// AFHTTPRequestOperationManager内部包装了NSURLConnectionAFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; NSDictionary *params = @{@"username" : @"aaa"};[mg

2016-03-24 15:37:47 232

原创 25.NSURLSession的使用

get请求1.第一种方法// 获得NSURLSession对象NSURLSession *session = [NSURLSession sharedSession];// 创建任务NSURLSessionDataTask *task = [session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWit

2016-03-24 15:16:41 224

原创 24.NSURLConnection与RunLoop

NSURLConnection *conn = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"qq"]] delegate:self];默认会开启一个子线程请求数据如果把请求放在 `dispatch_async` 中代理无返回数据 dispatch_asy

2016-03-20 11:45:09 239

原创 23.获取文件的MIMEType

第一种- (NSString *)MIMEType{if (![[NSFileManager defaultManager] fileExistsAtPath:self]) { return nil;}CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (_

2016-03-20 10:02:51 345

原创 22.文件解压缩

使用第三方库 SSZipArchive 方法[SSZipArchive createZipFileAtPath:<#(NSString *)#> withFilesAtPaths:<#(NSArray *)#>];[SSZipArchive createZipFileAtPath:<#(NSString *)#> withContentsOfDirectory:<#(NSString *)#>

2016-03-19 10:47:24 251

原创 21.文件下载

小文件下载如果文件比较小,下载方式会比较多直接用 NSData 的 dataWithContentsOfURL 方法NSURL *url = [NSURL URLWithString:@"sss"];NSData *data = [NSData dataWithContentsOfURL:url];利用 NSURLConnection 发送一个HTTP请求//方法一: NSURL *url

2016-03-19 10:15:40 255

原创 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 267

原创 19.如何修改UITextField的placeholder颜色

修改UITextField的placeholder颜色方法一://使用属性@property(nonatomic,copy) NSAttributedString *attributedPlaceholder; // 文字属性 NSMutableDictionary *attrs = [NSMutableDictionary dictionary];attrs[NSForegroundC

2016-03-03 21:37:16 293

原创 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 205

原创 17.指针与数组

指针p的加减法运算指针p + N p里面存储的地址值 + N * 指针所指向类型的占用字节数指针p - N p里面存储的地址值 - N * 指针所指向类型的占用字节数数组名存储的是数组首元素的地址等价于:一个指向数组首元素的指针数组名 + 1 的跨度:数组首元素的占用字节数其他结论&num + 1的跨度:num的占用字节数

2016-02-22 19:28:03 252

原创 16.copy与mutableCopy

实现拷贝的方法copy 只会产生不可变的副本对象(比如NSString)mutableCopy 只会产生可变的副本对象(比如NSMutableString) 自定义对象的拷贝

2016-02-19 21:04:42 218

原创 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 261

原创 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 296

原创 14.RunLoop的理解

什么是RunLoop从字面意思看:运行循环,跑圈其实它内部就是do-while 循环,在这个循环内部不断地处理各种任务(比如Source,Timer,Observer)一个线程对应一个RunLoop,主线程的RunLoop默认已经启动,子线程的RunLoop得手动启动(调用run方法)RunLoop只能选择一个Model启动,如果当前Model中没有任何Source,Timer,Observ

2016-02-16 21:41:47 506

原创 12.代理、通知、KVC\KVO

代理代理设计模式的作用: 1.A对象监听B对象的一些行为,A成为B的代理2.B对象想告诉A对象一些事情,A成为B的代理代理设计模式的总结 如果你想监听别人的一些行为,那么你就要成为别人的代理如果你想告诉别人一些事情,那么就让别人成为你的代理代理设计模式的开发步骤 1.拟一份协议(协议名字的格式:控件名 + Delegate),在协议里面声明一些代理方法(一般代理方法都是@option

2016-02-14 17:39:16 270

原创 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 222

原创 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 546

原创 9.UITableView的设置

tableView性能优化 - cell的循环利用方法1/** * 什么时候调用:每当有一个cell进入视野范围内就会调用 */ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ // 0.重用标识 // 被stati

2016-02-13 13:55:43 349

原创 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 346

原创 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 281

原创 6.UIScrollView与UIPageControl的认识

UIScrollView的属性@property(nonatomic) CGPoint contentOffset; 这个属性用来表示UIScrollView滚动的位置(其实就是内容左上角与scrollView左上角的间距值)@property(nonatomic) CGSize contentSize; 这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)@pro

2016-02-10 11:44:38 375

原创 5.Xib和storyboard对比

共同点:都用来描述软件界面都用Interface Builder工具来编辑本质都是转换成代码去创建控件不同点:Xib是轻量级的,用来描述局部的UI界面Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系Xib的加载方法1 NSArray *views = [[NSBundle mainBundle] loadNibNamed:@”xib文件名

2016-02-09 12:11:25 292

原创 4.模型与字典的对比

模型什么是模型? 专门用来存放数据的对象一般都是一些直接继承自NSObject的纯对象内部会提供一些属性来存放数据用模型取代字典的好处使用字典的坏处一般情况下,设置数据和取出数据都使用“字符串类型的key”,编写这些key时,编辑器没有智能提示,需要手敲 dict[@”name”] = @”Jack”; NSString *name = dict[@”name”];手敲字符串key

2016-02-09 12:01:32 448

原创 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

原创 2.UIView的认识

UIView的常见属性NSArray *subviews 所有的子控件数组元素的顺序决定着子控件的显示层级顺序(下标越大的,越显示在上面)UIView的常见方法addSubview: 添加一个子控件使用这个方法添加的子控件会被塞到subviews数组的最后面可以使用下面的方法调整子控件在subview数组中的顺序// 将子控件view插入到subviews数组的index位置-

2016-02-09 11:02:39 240

原创 1.UI

storyboard文件的认识用来描述软件界面默认情况下,程序一启动就会加载Main.storyboard加载storyboard时,会首先创建和显示箭头所指的控制器界面IBAction和IBOutletIBAction:本质就是void能让方法具备连线的功能IBOutlet能让属性具备连线的功能storyboard连线容易出现的问题连接的方法代码被删掉,但是连线没有去掉可能会出现

2016-02-09 10:56:00 314

原创 ios9中设置状态栏颜色与隐藏

1.ios中设置状态栏的样式由 最顶层的UIWindow所在的控制器控制处理。2.ios9之前可以不用设置window的根控制器,ios9必须设置根控制器。3.ios9后设置状态栏的样式(隐藏)时,在最顶层的UIWindow所在的控制器中通过下面两个方法处理  - (UIStatusBarStyle)preferredStatusBarStyle {   //设置样式

2016-02-01 15:52:59 4044

原创 ios9新特性分析

1.属性nonnull \__nonnull 修饰时:该属性的setter和 getter都不能为nil例如:@property (nonatomic,strong, nonnull)NSArray *names;@property (nonatomic,strong) NSArray * __nonnull names;设置属性names值时,如果为n

2016-01-31 21:46:09 357

原创 自定义UIPageControl圆点背景图片

// 显示页码的UIPageControlUIPageControl *pageControl = [[UIPageControlalloc] init];[pageControl setValue:[UIImageimageWithName:@"compose_keyboard_dot_selected"]forKeyPath:@"_currentPageImag

2016-01-28 16:39:33 803

原创 OC中的正则匹配

一.OC中原生的正则匹配//匹配QQ号- (void)checkQQ {    // QQ : 5 ~ 12,全部都是数字    NSString *str = @"8882341";    // 1.产生一个正则表达式对象    NSRegularExpression *regex = [NSRegularExpressionreg

2016-01-27 20:49:08 734

原创 对 removeObject 的理解

数组调用 removeObject  时底层会调用  - (BOOL)isEqual:(id)object 方法遍历数组中的对象,根据传入的 object 对象的指针,判断当前要比较的对象的指针是否和object的指针一样,如果一样则就是要删出的对象,如果不一样则继续遍历。如遇到不想根据对象的指针判断两个对象相等,如果只根据对象的某个属性判断两个对象是否相等,则比较对象

2016-01-27 16:09:23 981

原创 UIImageView的两种创建方式的比较

1.UIImageView *imgView = [[UIImageViewalloc] init];   imgView.frame =CGRectMake(0,0, 30,30);2.UIImage *imgView = [UIImageimageWithName:@"timeline_image_gif"];    // 这种情况下

2016-01-24 12:28:30 255

原创 iOS中类似九宫格排版数据

如果知道  1.数据总个数  2.每行(每页)最多显示的个数  就能算出数据一共能显示多少行(页)例子:一行(页)最多几个方法一:   int  maxCols  = 3;总行(页)数: int totalRows = 0;     if(count % maxCols == 0) {        totalRows = count /maxCols;

2016-01-14 22:07:43 392

原创 ios中处理时间是否是今天,昨天,今年

1.创建NSDate的分类#import "NSDate+MJ.h"/** *  是否为今天 */- (BOOL)isToday{    NSCalendar *calendar = [NSCalendarcurrentCalendar];    int unit =NSCalendarUnitDay | NSCalendar

2016-01-14 21:00:06 544

原创 给UIView添加背景图片的方法

1.  self.backgroundColor = [UIColorcolorWithPatternImage:[UIImage imageNamed:@"timeline_retweet_background"]];   直接平铺一张图片2.调用- (void)drawRect:(CGRect)rect {    [[UIImageimageNamed:@"

2016-01-13 20:52:05 294

空空如也

空空如也

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

TA关注的人

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