结构体NSPoint、NSRect、与NSSize或CG开头的详解

来源:互联网 发布:json unicode转中文 编辑:程序博客网 时间:2024/05/29 09:56
1、坐标类NSPoint与CGPoint
(1)NSPoint是表示UI元素的坐标的,等同于CGPoint,点击NSPoint进入文档(注意:坐标指组件左上角在屏幕中的坐标,x值从左到右增加,y值从上到下增加)
typedef CGPoint NSPoint;  点击CGPoint 进入继续如下:
struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;
再点击CGFloat进入继续进入文档如下:
# define CGFLOAT_TYPE double
typedef CGFLOAT_TYPE CGFloat;
所以说CGFloat就是double类型的数据。而NSPoint==CGPoint是封装坐标的类,当开发时使用CGPoint,因为它可以跨平台使用。
(2)坐标类的创建(有如下两种最常用的方式):
CGPoint p1=NSMakePoint(10,10);
NSPoint p2=CGPointMake(20,20);
2、尺寸类NSSize与CGSize
(1)NSSize是表示UI组件的宽度和高度的,等同于CGSize,点击NSSize进入开发文档如下:
typedef CGSize NSSize;   点击CGSize进入如下:
struct CGSize {
  CGFloat width;//已知CGFloat就是是double
  CGFloat height;
};
typedef struct CGSize CGSize;      
NSSize与CGSize是表示UI组件的尺寸的。同样创建尺寸类的方法上同:
NSSize s1=CGSizeMake(100,50);
NSSize  s2=NSMakeSize(100,50);
CGSize s3=NSMakeSize(200,60);
3、NSRect与CGRect(组件所占的区域范围)
点击NSRect进入
typedef CGRect NSRect; 点击CGRect进入
struct CGRect {
  CGPoint origin;//组件所占区域的起点坐标
  CGSize size;//组件所占区域的宽度和长度
};
typedef struct CGRect CGRect;
创建此类的方法如下:
NSRect rect=NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h)
即CGRect cr=CGMakeRect(0,0,100,50);
4、同一打印结构体的每个变量:
如果按普通的方式一一进行输出很麻烦。完全可以用另外一种方式:
可以将一个结构体转换为字符串,直接打印即可。
例如将NSPoint转换为字符串的方法如下:
NSString *str=NSStringFromPoint(p1);//p1为NSPoint对象 
别的也与此类似例如NSSize,NSRect转换为字符串如下:
NSString *str=NSStringFromSize(s3); //s3是NSSize对象
NSString *str=NSStringFromSize(rect);//rect是NSRect对象
5、以上类的其它简便用法
创建一个NSRect的另一种方法:
CGRect rect={{0,0},{100,90}}; 或者CGRect rect={p1,s2};
开发中经常用到坐标原点CGPointMake(0,0)等同于一个常量CGPointZero 所以以上的定义也可以写作如下格式:
CGPoint rect={CGPointZero,CGSizeMake(100,90)};
与此类似也有CGRect类型常量CGRectZero表示起始位置和宽高都为0,也有CGSize类型的常量CGSizeZero它表示宽高都为0。
6、比较是否以上类是否相同的方法:
CGPointEqualToPoint(CGPoint point1, CGPoint point2)
CGSizeEqualToSize(CGSize size1, CGSize size2);
CGRectEqualToRect(CGRect rect1, CGRect rect2); 
都是返回BOOL类型的值。
注意:一般以CG开头的都是CoreGraphics框架内的类。以上类都是。
CoreGraphics这个框架是跨平台的。
7、用以下方法判断某个点point在没在左方的rect区域内
BOOL b=CGRectContainsPoint(CGRect rect, CGPoint point);

0 0
原创粉丝点击