iOS 零星小技巧 - 01

前言:iOS有许多琐碎的知识点而且是比较简单的(往往我们最容易忽略的),我把所有自己觉得有用的东西从大牛的博客或文章中截取过来,方便自己以后查找(也希望对看文章的你又帮助)

查看提示

01 layoutSubviews调用的调用时机
02 Color颜色宏定义
03 视图的生命周期
04 UIImageView填充模式
05 文字内容换行
06 把NSString格式的日期转换为NSDate
07 延迟执行
08 加载plist文件
09 常用宏定义
10 获得当前界面的控制器
11 如何设置自定义字体
12 进程和线程的简单介绍
13 从xib创建的cell注册方法
14.label的设置圆角的区别
pragma — mark - 01
  • layoutSubviews调用的调用时机
1.当视图第一次显示的时候会被调用
2.当这个视图显示到屏幕上了,点击按钮
3.添加子视图也会调用这个方法
4.当本视图的大小发生改变的时候是会调用的
5.当子视图的frame发生改变的时候是会调用的
6.当删除子视图的时候是会调用的
pragma — mark - 02
  • Color颜色宏定义
// 随机颜色
#define RANDOM_COLOR [UIColor colorWithRed:arc4random_uniform(256) / 255.0 green:arc4random_uniform(256) / 255.0 blue:arc4random_uniform(256) / 255.0 alpha:1]
// 颜色(RGB)
#define RGBCOLOR(r, g, b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]
#define RGBACOLOR(r, g, b, a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
pragma — mark - 03
  • 视图的生命周期
1、 alloc 创建对象,分配空间
2、 init (initWithNibName) 初始化对象,初始化数据
3、 loadView 从nib载入视图 ,除非你没有使用xib文件创建视图
4、 viewDidLoad 载入完成,可以进行自定义数据以及动态创建其他控件
5、 viewWillAppear视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、 viewDidAppear 视图已在屏幕上渲染完成
7、viewWillDisappear 视图将被从屏幕上移除之前执行
8、viewDidDisappear 视图已经被从屏幕上移除,用户看不到这个视图了
9、dealloc 视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放.
pragma — mark - 04
  • UIImageView填充模式
@"UIViewContentModeScaleToFill",      // 拉伸自适应填满整个视图  
@"UIViewContentModeScaleAspectFit",   // 自适应比例大小显示  
@"UIViewContentModeScaleAspectFill",  // 原始大小显示  
@"UIViewContentModeRedraw",           // 尺寸改变时重绘  
@"UIViewContentModeCenter",           // 中间  
@"UIViewContentModeTop",              // 顶部  
@"UIViewContentModeBottom",           // 底部  
@"UIViewContentModeLeft",             // 中间贴左  
@"UIViewContentModeRight",            // 中间贴右  
@"UIViewContentModeTopLeft",          // 贴左上  
@"UIViewContentModeTopRight",         // 贴右上  
@"UIViewContentModeBottomLeft",       // 贴左下  
@"UIViewContentModeBottomRight",      // 贴右下
pragma — mark - 05
  • 文字内容换行
如何让storyboard\xib中的文字内容换行: 
       -> 快捷键: option + 回车键
   (在storyboard\xib输入\n是无法实现换行的)
在代码中输入\n是可以实现换行的
self.label.text = @"534534534\n5345345\n5345";
pragma — mark - 06
// 时间字符串
NSString *string = @"2015-11-20 09:10:05";

// 日期格式化类(用这个类来转换)
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 设置日期格式(必须告诉它你想要转换为何种日期格式)
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// NSString * -> NSDate *
NSDate *date = [fmt dateFromString:string];
NSLog(@"%@", date);

pragma mark - 07
  • 延迟执行
 //1.延迟执行的第一种方法
    [self performSelector:@selector(task) withObject:nil afterDelay:2.0];
    
    //2.延迟执行的第二种方法
    [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(task) userInfo:nil repeats:NO];

 //3.延迟执行的第三种方法--GCD
// dispatch_queue_t queue = dispatch_get_main_queue();//在主线程中
 dispatch_queue_t queue = dispatch_get_global_queue(0, 0);//全局并发队列(在异步线程中执行)
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), queue, ^{
        [self task];
    });
    

pragma mark - 08 加载plist文件
分两步走:
1.获取当前plist文件资源路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"tmac.plist" ofType:nil];
2.根据路径加载plist文件
 _array = [NSArray arrayWithContentsOfFile:filePath];
pragma mark - 09 常用宏定义
1.获取屏幕宽度与高度
#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
#define SCREENH_HEIGHT [UIScreen mainScreen].bounds.size.height
2.获取通知中心
#define MJNotificationCenter [NSNotificationCenter defaultCenter]
3.设置随机颜色
#define MJRandomColor [UIColor colorWithRed:arc4random_uniform(256)/255.0 green:arc4random_uniform(256)/255.0 blue:arc4random_uniform(256)/255.0 alpha:1.0]
4.设置RGB颜色/设置RGBA颜色
#define MJRGBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0]
#define MJRGBAColor(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(r)/255.0 blue:(r)/255.0 alpha:a]
5.由角度转换弧度 由弧度转换角度
#define MJDegreesToRadian(x) (M_PI * (x) / 180.0)
#define MJRadianToDegrees(radian) (radian*180.0)/(M_PI)

pragma mark - 10 获得当前界面的控制器
 UIViewController *rootVc = [[[UIApplication sharedApplication]keyWindow] rootViewController];
pragma mark - 11 如何设置自定义字体

点击进入博客

pragma mark - 12 进程和线程的简单介绍
 1、进程
(1)正在进行中的程序被称为进程,负责程序运行的内存分配。
(2)每一个进程都有自己独立的虚拟内存空间。
2、线程
    (1)线程是进程中一个独立的执行路径(控制单元)。
    (2)一个进程中至少包含一条线程,即主线程。
    (3)可以将耗时的执行路径(如网络请求)放在其他线程中执行。
(4)线程不能被杀掉,但是可以暂停/休眠一条线程。
    (5)创建线程的目的:
    开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同时运行。
    (6)多任务调度系统:
    每个应用程序由操作系统分配的短暂的时间片(Timeslice)轮流使用CPU,由于CPU对每个时间片的处理速度非常快,因此,用户看来这些任务好像是同时执行的。
    (7)并发:
指两个或多个任务在同一时间间隔内发生,但是,在任意一个时间点上,CPU只会处理一个任务。
备注:主线程最大占1M的栈区空间,每条子线程最大占512K的栈区空间。
    3、多线程
    (1)充分发挥多核处理器优势,将不同线程任务分配给不同的处理器,真正进入"并行运算"状态。
    (2)将耗时的任务分配到其他线程执行,由主线程负责统一更新界面会使应用程序更加流畅,用户体验更好。
    (3)当硬件处理器的数量增加,程序会运行更快,而程序无需做任何调整。
    (4)新建线程会消耗内存空间和CPU时间,线程太多会降低系统的运行性能
pragma mark - 13 从xib创建的cell注册方法
//注册
        [_tableView registerNib:[UINib nibWithNibName:NSStringFromClass([MainTableViewCell class]) bundle:nil] forCellReuseIdentifier:@"cell"];
pragma mark - 14.label的设置圆角的区别
#常用做法
 self.label.text = @"皮尔斯";
    self.label.backgroundColor = [UIColor brownColor];

    self.label.layer.cornerRadius = 5;
    self.label.layer.borderWidth = 1;
    self.label.layer.borderColor = [UIColor cyanColor].CGColor;
    self.label.layer.masksToBounds = YES;

#修改后的不会造成离屏渲染
self.label.text = @"皮尔斯";
    self.label.layer.backgroundColor = [UIColor brownColor].CGColor;

    self.label.layer.cornerRadius = 5;
    self.label.layer.borderWidth = 1;
    self.label.layer.borderColor = [UIColor cyanColor].CGColor;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容

  • iOS 常用小技巧大杂烩(上) 1,打印View所有子视图 po [[self view]recursiveDes...
    Mr_董阅读 376评论 0 0
  • 打印View所有子视图 layoutSubviews调用的调用时机 当视图第一次显示的时候会被调用当这个视图显示到...
    hyeeyh阅读 514评论 0 3
  • iOS 常用小技巧大杂烩(上) 2016-06-02 iOS大全 (点击上方公众号,可快速关注) 来源:品味_生活...
    鬣狗赛跑阅读 293评论 0 1
  • 文/洛小简 一个人流浪,一个人彷徨,一个人的未知方向。一个人疯狂,一个人浪荡,一个人的梦在远方。一个人感伤,一个人...
    洛小简阅读 230评论 1 4
  • 2016-12-31子隆 原来我们我们走了这么长的时间,却只是为了回头跟来时的路说一声道别。 今早起床的时候,想到...
    静和言舞CC阅读 246评论 0 1