一.基本定义
(1). 使用方式 :#import <Foundation / Foundation.h>
(2). 常用的结构体介绍及简单使用 :
表示字符串位置和长度 : NSRange(location length)
表示坐标 NSPointCGPoint
表示UI元素的大小 NSSizeCGSize
表示UI元素的位置和大小 NSRectCGRect (CGPint CGSize)
结构体的定义方式 :
stuct Date {
int year;
int month;
int day;
};
// 结构体的使用
struct Date d = {2013 , 9 , 1}; / / 不使用这种方式定义
struct Date d2 = {.month = 12 , .year = 2013 , .day = 12} / / 不使用这种方式定义
(3). 按范围获取字符串 NSMakeRange 结构体
NSRange r1 = {2 , 4}; // 不用,可读性不好
NSRange r2 = { .location = 2 , .length = 4 } ; // 不用,代码显得多余
NSRange r3 = NSMakeRange (2 , 4 ); // 掌握,系统方法
(4) . rangeOfString : 查找某个字符串在range的范围
// 如果找不到,length = 0 , location = NSNotFound = -1
NSString *str = @“I love oc”;
NSRange range = [str rangOfString : @“love”]; // 查找某个字符串在str中的范围
NSLog(@“location = %d , length = %d”, range.location , range.length); // 2 , 4
二. Point、Size、Rect01 结构体-简介
2. 1 CGFloat 是double类型
struct CGPoint{
CGFloat x ;
CGFloat y ;
};
CGPoint : UI元素的位置
// typedef 定义新的类型名来替换已有的类型名
typedef 原类型名 新类型名
typedef struct CGPoint CGPoint; // 开发中使用,跨平台
typedef CGPoint NSPoint
2.2 NSPointCGPoint NSMakePoint(x , y );
定义一个点 CGPoint p1 = NSMakePoint(10, 10);
CGPoint p1 = CGPointMake(20 , 20) ; // 最常用
== NSPoint p2 = CGPointMake(20, 20);// 最常用
表示原点 CGPointZero == CGPointMake( 0 , 0 ) ;
2.3 NSSizeCGSize 定义控件的尺寸 CGSizeMake(width , height);
NSSize s1 = CGSizeMake(100, 50);
NSSize s2 = NSMakeSize(100, 50);
CGSize s3 = NSMakeSize(200, 60);
2.4 NSRectCGRect (CGPoint CGSize)
// 相当与UI元素的位置和尺寸
typedef strct _NSRect
{
NSPoint origin ; // UI元素的位置
NSSize size ; // UI的尺寸
}
// 定义一个元素的位置和尺寸 (x , y , width . height)
CGRect r1 = CGRectMake( o , o , 100 , 50);
CGRect r2 = { {0,0} , {100 , 50 }}; // 这个结构体中含有2个结构体
CGRect r3 = {p1 , s2}; // 将2个定义好的结构体传进入
CGRect r4 = {CGzero , CGSizeMake(100 , 50) };
// 模拟实现NSRectMake
CGRect myRect(GCFloat x , CGFloat y , CGFloat width , CGFloat height)
{
GCRect rect ; // 定义CGRect结构体变量
rect.origin.x = x; // 为结构体变量赋值
rect.origin.y = y;
rect.origin,width = width;
rect.origin.height = height;
return rect;
}
2.5 将结构体转为字符串打印显示,便于调试
CGPoint p1 = NSMakePoint(10, 10);
NSString *str = NSStringFromPoint(p1);
NSLog(@“%@“,str);
2.6 // 比较两个点是否相同(x、y)
BOOL b = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
比较尺寸 CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>)
比较位置和尺寸 CGRectEqualToRect(<#CGRect rect1#>, <#CGRect rect2#>)
2.7 判断某个点是否在规定的区域
// x (50, 150) y (40 , 90) 点的范围
BOOL b2 = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));
// CG 开头的依赖于 CoreGraphics (核心图形)
使用这些CGPointEqualToPoint、CGRectContainsPoint等函数的前提是添加CoreGraphics框架
可以在下图中的方式添加框架
补充 : 导入框架 Build phase -- > (+)
ios中坐标原点在左上角,右为X轴,下位Y轴