前言: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
1.当视图第一次显示的时候会被调用
2.当这个视图显示到屏幕上了,点击按钮
3.添加子视图也会调用这个方法
4.当本视图的大小发生改变的时候是会调用的
5.当子视图的frame发生改变的时候是会调用的
6.当删除子视图的时候是会调用的
pragma — mark - 02
// 随机颜色
#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
@"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;
网友评论