首页投稿(暂停使用,暂停投稿)

iOS 零星小技巧 - 01

2016-06-21  本文已影响66人  浮桥小麦
前言: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;

上一篇下一篇

猜你喜欢

热点阅读