zoukankan      html  css  js  c++  java
  • Foundation框架

    Foundation框架

    NSBundle

    • NSBundle的类方法
      • mainBundle:获取项目主路径
        • pathForResource-ofType:通过文件名及类型获取文件的相对路径
        • URLForResource-withExtension:通过文件名和类型获取文件的绝对路径
    /***************获取文件路径示例****************/
    //该文件必须是存放在项目包内,而不是Assets.xcassets内
    //方式一:pathForResource-ofType
        NSString *path = [[NSBundle mainBundle] pathForResource:@"07 See You Again (feat. Charlie Puth).mp3" ofType:nil];
    //方式二:URLForResource-withExtension
        NSURL *url = [[NSBundle mainBundle] URLForResource:@"いつも何度でも(主题歌).mp3" withExtension:nil];

    NSURL

    • NSURL的创建
    //方式一
        NSURL *url = [[NSBundle mainBundle] URLForResource:@"いつも何度でも(主题歌).mp3" withExtension:nil];
    //方式二
        NSString *path = [[NSBundle mainBundle] pathForResource:@"07 See You Again (feat. Charlie Puth).mp3" ofType:nil];
        NSURL *url = [[NSURL alloc] initFileURLWithPath:path];

    NSNumber

    • NSNumber的类方法
      • numberWithFloat:将浮点类型数据转化成OC对象

    NSUserDefaults

    • NSUserDefaults的类方法
      • standardUserDefaults:创建一个NSUserDefaults对象
        • 这个对象其实类似字典,着也是一个单例的例子
    • NSUserDefaults的对象方法
      • synchronize:把数据同步到本地

    NSString

    • NSString对象的常见方法
      • sizeWithAttributes:返回字符串文字的size,传入文字属性
        • 返回字符串文字的宽度
        • height:返回字符串文字的高度,只能计算一行的高度
      • sizeWithFont-constrainedToSize:计算会自动换行的字符串文字高度
      • boundingRectWithSize-options-attributes-context:
        • boundingRectWithSize:传入一个CGSize
        • options:计算方式,传入NSStringDrawingUsesLineFragmentOrigin即可,从左上角开始计算
        • attributes:传入字符串属性
        • context:传入nil即可,和绘图有关
    /*********sizeWithAttributes的使用*********/
        NSString *test = @"text";
        NSDictionary *testAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:17]
                                         };
        CGSize testSize = [test sizeWithAttributes:testAttributes];
     
    /*********sizeWithFont-constrainedToSize的使用*********/    
    //如果文字需要换行计算文字的高度
        NSString *test = @"text";
        //最大宽度是400,高度不限制
        CGSize testSize = CGSizeMake(400, MAXFLOAT);
        CGFloat testHeight = [test sizeWithFont:[UIFont systemFontOfSize:17] constrainedToSize:testSize].height;
    
    /*********sizeWithFont-constrainedToSize的使用*********/    
        NSString *test = @"text";
        NSDictionary *testAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:17]
                                         };
        //最大宽度是400,高度不限制
        CGSize testSize = CGSizeMake(400, MAXFLOAT);
        CGFloat testHeight = [test boundingRectWithSize:testSize options:NSStringDrawingUsesLineFragmentOrigin attributes:testAttributes context:nil].size.height;
    }

    NSMutableArray

    • NSMutableArray的对象方法
      • addObject:向数组中添加成员

    NSArray

    • NSArray的类方法
      • arrayWithContentsOfFile:通过一个文件创建一个数组

    NSTimer

    • NSTimer的应用场景
      • 定时器:每隔一段时间执行一个方法
    • NSTimer的常见方法
      • scheduledTimerWithTimeInterval-target-selector-userInfo-repeats:每隔固定时间通知目标对象执行某个方法

        • 会返回一个自动执行的定时器对象
        • 传入执行方法的参数为NSTimer对象
        • TimeInterval:时间间隔
        • target:目标对象,即执行方法的对象,一般设置控制器self
        • selector:执行的方法,@selector(方法名)
        • userInfo:会随着传递到执行方法的对象一起传递过去,在执行方法中通过对象的属性调用即可(time.userInfo)
        • repeats:是否重复,NO即执行一次
      • invalidate:停止定时器

    • NSTimer的注意点
      • NSTimer停止后即会被销毁,开始-停止是在不停的创建和销毁NSTimer对象
      • NSTimer默认在主线程中操作,所以在主线程显示刷新UI界面,处理与用户的其他交互事件时候,就会停止处理NSTimer,所以需要
    #import "ViewController.h"
    @interface ViewController ()
    @property (nonatomic ,strong) NSTimer *timer;
    @end
    /*
    主线程:程序已启动,系统会默认创建一条线程
    主线程作用:显示刷新UI界面,处理与用户的交互事件
    */
    @implementation ViewController
    - (void)viewDidLoad {
        [super viewDidLoad];
    }
    
    - (void)startTimer {
        //创建一个NSTimer对象
        self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(xxxx) userInfo:nil repeats:YES];
        //作用:修改timer在runLoop中的模式为NSRunLoopCommonModes
        //目的:不管主线程在做神马操作,都会分配一定的事件处理定时器
        //NSRunLoopCommonModes:可以分配一定的时间处理定时器
        [[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
    }
    
    -(void)stopTimer {
        //停止定时器,即销毁定时器
        [self.timer invalidate];
    }

    NSRunLoop

    NSLayoutConstraint

    • NSLayoutConstraint的注意点
      • storyboard中每一条约束都是一个NSLayoutConstraint对象
      • storyboard创建的约束也可以像其他控件一样拖线至代码中
      • 使用代码创建约束必须创建NSLayoutConstraint对象
      • 创建好后使用被添加对象的addConstraint方法将创建好的NSLayoutConstraint对象添加进被添加对象
        • 对于两个同层级view之间的约束关系,添加到他们的父View上
        • 对于两个不同层级view之间的约束关系,添加到他们最近的共同父view上
      • 对于有层级关系的两个view之间的约束关系,添加到层级较高的父View上
    - 在使用代码添加约束的时候,要将每一个添加约束的View的translatesAutoresizingMaskIntoConstraints修改为NO
    • NSLayoutConstraint的常见属性

      • constant:获取/设置某一NSLayoutConstraint对象的约束常量数值
    • NSLayoutConstraint的常见方法

      • constraintWithItem-attribute-relatedBy-toItem-attribute-multiplier-constant:创建NSLayoutConstraint对象的方法

        • constraintWithItem:添加的约束的对象
        • attribute:添加约束的对象的属性,例如宽高等
        • relatedBy:添加约束的对象与数值或参照对象的关系
        • toItem:参照对象,没有参照对象时,toItem为nil
        • attribute:参照对象的属性,没有参照对象时,attribute为0或者NSLayoutAttributeNotAnAttribute
        • multiplier:参照对象的属性的倍增数,没有参照对象时,multiplier为0.0
        • constant:约束常量
        • 与参照对象之间的偏移约束常量,例如与底部的距离是30,constant就是-30
        • 自身的约束常量,例如约束宽度为30,constant就是30
      • addConstraint:将创建好的约束添加入对应控件,对应constraintWithItem创建方法

      • constraintsWithVisualFormat-options-metrics-views:使用VFL语言创建一个约束数组

        • constraintsWithVisualFormat:用VFL语言写的约束字符串
        • options:添加对齐约束,例如顶部对齐,底部对齐,是指水平方向上所有空间对齐
        • metrics:字典参数,字典中包含当约束常量用其他标识符标识时,各个标识符所对应的竖直,例如以下的space
        • views:字典参数,字典中包含“[]”中括号内对象标识符所对应的对象
      • addConstraints:将创建好的约束添加入对应控件,对应constraintsWithVisualFormat创建方法 

      • NSIndexPath

        • NSIndexPath的对象属性
          • section:tableView中哪一组
          • row:tableView中哪一行
  • 相关阅读:
    Mac使用Homebrew进行软件包管理
    RNN模拟二进制加法
    虚拟机安装ubuntu18.04
    github合并分支到master
    Python配置虚拟环境
    Python的进程、线程、协程
    原码,反码,补码
    MySQL中的截位函数:RIGHT与LEFT
    MySQL查询和删除重复记录
    Mysql中的数据类型
  • 原文地址:https://www.cnblogs.com/igeniuswwh/p/6209135.html
Copyright © 2011-2022 走看看