-------
Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、基本知识
Foundation—基础框架。框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础。
如果要想使用foundation框架中的数据类型,那么包含它的主头文件就可以了。
即#import<foundation/foundation.h>
补充:core foundation框架相对底层,里面的代码几乎都是c语言的,而foundation中是OC的。
二、常用的结构体介绍及简单使用
常用的结构体:
NSRange:表示范围
NSPoint/CGPoint:表示一个点
NSSize/CGSize:表示大小
NSRect/CGRect:表示一个矩形区域
三、NSRange
1、NSRange的定义:NSRange类型的结构体用于表示范围。
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
2、NSRange的使用
NSString *str = @"I Love OC";
//Love的位置
NSRange r = {2, 4};
int main(int argc, const char * argv[])
{
// 表示@"i love you"字符串中love的范围
NSRange range = {2, 4}; // 在实际开发中不用这种方式,可读性差。
NSRange range1 = {.location = 2, .length = 4}; // 不够精简,冗余。
//常用的方法是使用Foundation框架自带函数
NSRange range2 = NSMakeRange(2,4);
return 0;
}
NSString *str = @"I Love OC";
// 查找某个字符串在str中的范围
// 如果找不到,length=0,location= NSNotFound = -1
NSRange range = [str rangeOfString:@"Love"];
range = [str rangeOfString:@"java"];
NSLog(@"location = %ld, length = %ld", range.location, range.length);
三、NSPoint/CGPoint
1、定义
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
typedef CGPoint NSPoint;
2、创建方式:
//
// main.m
// 01-结构体
//
// Created by rui on 4/5/15.
// Copyright (c) 2015 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
CGPoint p = CGPointMake(23, 24);
NSPoint p2 = NSMakePoint(24, 25);
return 0;
}
3、比较两个点是否相同
CGPointEqualToPoint(CGPoint, CGPoint);
四、NSSize/CGSize
1、定义
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
typedef CGSize NSSize;
2、创建方式:
//
// main.m
// 01-结构体
//
// Created by rui on 4/5/15.
// Copyright (c) 2015 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
NSSize s = NSMakeSize(200, 69);
CGSize s2 = CGSizeMake(100, 50);
return 0;
}
3、比较两个CGSize是否相同
CGSizeEqualToSize(CGSize, CGSize);
五、NSRect/CGRect
1、定义
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
typedef CGRect NSRect;
2、创建方式:
//
// main.m
// 01-结构体
//
// Created by rui on 4/5/15.
// Copyright (c) 2015 itcast. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
NSPoint p = NSMakePoint(100, 20);
CGPoint p2 = CGPointMake(129, 240);
NSSize s = NSMakeSize(200, 69);
CGSize s2 = CGSizeMake(100, 50);
NSRect r = NSMakeRect(100, 24, 100, 200);
CGRect r1 = CGRectMake(50, 60, 70, 80);
return 0;
}
3、常用方法:
比较两个CGRect是否相同
CGRectEqualToRect(CGRect, CGRect);
判断一个CGRect是否包含一个Point
CGRectContainsPoint(CGRect, CGPoint);
五、打印输出结构体
CGPoint输出:NSStringFromPoint()函数
CGSize输出:NSStringFromSize()函数
CGRect输出:NSStringFRomRect()函数
输出示例:
NSString *strPoint = NSStringFromPoint(p);
NSLog(@"%@", strPoint);
NSString *strSize = NSStringFromSize(s);
NSLog(@"%@", strSize);
NSString *strRect = NSStringFromRect(r);
NSLog(@"%@", strRect);