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中哪一行
原文地址:https://www.cnblogs.com/igeniuswwh/p/6209135.html