iOS 零星小技巧 - 01

作者: 浮桥小麦 | 来源:发表于2016-06-21 13:37 被阅读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
    • 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;
    
    

    相关文章

      网友评论

        本文标题:iOS 零星小技巧 - 01

        本文链接:https://www.haomeiwen.com/subject/gktgdttx.html