时候有java和C基础同学迅速了解OC
- #import <Foundation/Foundation.h>
- int main()
- {
- // CGPoint创建几个方式,结果相同
- // {} 创建方式只能声明同时赋值,利用函数创建可以先声明后赋值
- CGPoint p3,p4,p5;
- CGPoint p1={0,0};
- CGPoint p2={.x=0,.y=0};
- p3=CGPointMake(0,0);
- p4=NSMakePoint(0,0);
- // 常量CGPointZero,表示{0,0},
- // 屏幕上表示的话即 最左上角的点
- p5=CGPointZero;
-
- // CGSize创建几个方式,结果相同
- CGSize s3,s4,s5;
- CGSize s1={0,0};
- CGSize s2={.width=0,.height=0};
- s3=CGSizeMake(0,0);
- s4=NSMakeSize(0,0);
- // 常量CGSizeZero,表示{0,0},
- s5=CGSizeZero;
-
-
- // CGRect创建几个方式,结果相同
- CGRect r5,r6;
- CGRect r1={0,0,0,0};
- CGRect r2={{0,0},{0,0}};
- CGRect r3={.origin.x=0,.origin.y=0,.size.width=0,.size.height=0};
- CGRect r4={CGPointZero,CGSizeZero};
- r5=CGRectMake(0,0,0,0);
- r6=NSMakeRect(0,0,0,0);
-
- BOOL b1,b2,b3,b4;
- //比较两个结构体值是否相等
- b1=CGPointEqualToPoint(p1,CGPointZero);
- b2=CGSizeEqualToSize(s1,CGSizeZero);
- b3=CGRectEqualToRect(r1,r4);
- // 判断点是否在矩形内
- b4=CGRectContainsPoint(r4,CGPointZero);
-
- NSLog(@"b1=%d,b2=%d,b3=%d,b4=%d",b1,b2,b3,b4);
- // 调用NSStringFromXXX函数将结构体转成OC字符串输出
- NSLog(@"CGPointZero=%@",NSStringFromPoint(CGPointZero));
- NSLog(@"CGSizeZero=%@",NSStringFromSize(CGSizeZero));
- NSLog(@"r4=%@",NSStringFromRect(r4));
-
- // NSRange无对应CG版本
- NSRange range1=NSMakeRange(0,10);
- NSLog(@"range1=%@",NSStringFromRange(range1));
-
- return 0 ;
- }
复制代码
几个常用结构体的定义:
注:基本CG开头的结构体都有一个与之一样定义的NS开头的版本,
两者等价,但出于程序的可移植性考虑,项目中一般使用CG开头的版本,
CG开头版本多平台通用;
typedef struct _NSRange{
unsigned long location,length;
} NSRange;
typedef struct _NSPoint{
double x,y;
} NSPoint;
typedef struct _NSSize{
double width,height;
} NSSize;
typedef struct _NSRect{
NSPoint origin;
NSSize size;
} NSRect;
typedef struct CGPoint{
double x,y;
} CGPoint;
typedef struct CGSize{
double width,height;
} CGSize;
typedef struct CGRect{
CGPoint origin;
CGSize size;
} CGRect;
几个操作这些结构体的常用函数:
注:CG开头的函数实现在CoreGraphics framework中,项目中使用需加入此框架,
但Foundation的主头文件中也有对这些函数的声明(无实现),
因此无需在代码文件中 #import CoreGraphics的主头文件;
一些NS开头的方法也有对应CG开头的版本,CG版本多平台通用;
//操作CGPoint,CGSize,CGRect这类结构体的函数,函数名命名规律相同
NSString * NSStringFromPoint(CGPoint p); // 转成OC字符串方便打印
// 构造函数
NSRange NSMakeRange(unsigned long location,unsigned long length);
CGPoint NSMakePoint(double x,double y); // 构造CGPoint
CGPoint CGPointMake(double x,double y); //效果同上
CGRect CGRectMake(double x,double y,double width,double heigth); // 构造CGRect
// 比较两个结构体值是否相同
BOOL CGPointEqualToPoint(CGPoint p1,CGPoint p2);
// 判断点是否在矩形内
BOOL CGRectContainsPoint(CGRect rect,CGPoint point);
|
|