一、基础知识
Foundation一基础框架。框架中包含了框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础。
如果要想使用foundation框架中的数据类型,那么包含它的主头文件就可以了。即:#import<foundation/foundation.h>
注意:core foundation框架相对底层,里面的代码几乎都是c语言的,而foundation中的是OC的。
二、常用的结构体介绍以及简单使用 (结构体不是对象)
常用的结构体
NSRange(location length) // 表示范围
NSPoint/CGPoint // 表示坐标
NSSize/CGSize // 表示大小
NSRect/CGRect(CGPint, CGSize) // 一个UI元素的位置和尺寸
1. NSRange的使用 NSRange(location, length);
NSRange 这个结构体用来表示事物的一个范围,通常是字符串的范围或者集合里的元素范围
location 表示该范围的起始位置 length 表示该范围内所含的元素
struct Date {
int year;
int month;
int day;
};
// 使用typedef 来重新定义
typedef struct Date1 {
int year;
int month;
int day;
}Date2;
void _struct() {
// 创建一个Date类型的结构体变量,在创建的时候给变量赋值
// 方式一
struct Date date1 = {2015, 8, 18};
NSLog(@"方式一:%i", date1.year);
// 方式二
struct Date date2 = {.year = 2015, .month = 8, .day = 19};
NSLog(@"方式二:%i", date2.month);
// 方式三
Date2 date3 = {2015, 8, 18};
NSLog(@"方式三:%i", date3.day);
}
void range() {
// 使用NSRange 创建变量
// 方式一 直接给成员赋值
NSRange range;
range.location = 7;
range.length = 3;
NSLog(@"location: %zi length: %zi", range.location, range.length);
// 方式二 利用C语言的聚合结构赋值
NSRange range1 = {2, 4};
NSRange range2 = {.location = 2, .length = 4};
NSLog(@"location1: %zi length1: %zi", range1.location, range1.length);
NSLog(@"location2: %zi length2: %zi", range2.location, range2.length);
// 方式三 实际开发中使用最多的是使用Foundation自带的快捷函数
NSRange range3 = NSMakeRange(2, 4);
NSLog(@"location3: %zi length3: %zi", range3.location, range3.length);
// 快速打印
NSString *str = NSStringFromRange(range);
NSLog(@"%@", str);
}
2. NSPoint/CGPoint的使用 CGPoint 等价于 NSPoint
主要是运用到UI处理中,用来表示点,图形绘制。。。
void point() {
// 方式一
CGPoint p;
p.x = 19;
p.y = 22;
// 打印成字符串
NSString *str = NSStringFromPoint(p);
NSLog(@"str: %@", str);
// 方式二
NSPoint pp;
pp.x = 19;
pp.y = 22;
// 快速创建
pp = NSMakePoint(19, 22);
NSString *str1 = NSStringFromPoint(pp);
NSLog(@"str1: %@", str1);
// 快速穿件
pp = CGPointMake(19, 22);
NSString *str2 = NSStringFromPoint(p);
NSLog(@"str2: %@", str2);
}
3. NSSize/CGSize的使用
"表示UI元素尺寸(宽度,高度)"
// CGSize/NSSize 表示UI元素的尺寸(宽度,高度)
void size() {
// 方式一创建
NSSize size;
size.width = 100;
size.height =122;
NSString *str = NSStringFromSize(size);
NSLog(@"str: %@", str);
// 方式二
NSSize size1;
size1 = NSMakeSize(10, 0);
NSString *str1 = NSStringFromSize(size);
NSLog(@"str1: %@", str1);
size1 = CGSizeMake(10, 0);
NSString *str2 = NSStringFromSize(size);
NSLog(@"str2: %@", str2);
}
4. NSRect/CGRect的使用
"一个UI元素的位置和尺寸"
void rect() {
// 方式一
NSRect rect;
rect.origin.x = 10;
rect.origin.y = 12;
rect.size.width = 180;
rect.size.height = 90;
NSString *str = NSStringFromRect(rect);
NSLog(@"str: %@", str);
// 方式二
NSRect rect1;
rect1 = NSMakeRect(10, 10, 10, 10);
rect1 = CGRectMake(10, 10, 10, 10);
NSString *str2 = NSStringFromRect(rect1);
NSLog(@"str2: %@", str2);
}
5. Foundation框架比较常用到的函数
foundation框架中结构体常用的函数。 注意 使用这些CGPointEqualToPoint、CGRectCotainsPoint等函数前提是添加CoreGraphics框架
BOOL result = CGPointEqualToPoint(<#CGPoint point1#>, <#CGPoint point2#>); // 比较两个点是否相同
// 返回的值是0 假 1 真
** 导入框架: build phrase->rink(+)
** ios中的坐标是屏幕坐标