【CGPoint Objective-C语言】

一、Foundation框架中常用的结构体

1.例如,在手机界面上,有一个按钮,我要你定义一个变量,来保存这个按钮的位置,

定义1个变量来保存按钮在iOS界面上的位置,

位置,什么是位置,就是坐标对不对,就是坐标

这个坐标是相对于什么的坐标,

哪1点相对于什么的坐标,

记住,坐标是空间左上角的那1点,相对于这个iOS界面的坐标,我要你声明1个变量,来保存这1点的坐标,你该什么1个什么类型的变量呢

结构体,为什么是结构体呢,1个坐标,我们平面上的1个坐标,要用几个数据来描述呢,2个

1个x坐标,和1个y坐标,

所以,要描述这1点的话,两个封装数据,1个x坐标,1个y坐标,

那我们说可以用类,也可以用结构体吧,

如果是你的话,你选类,还是选结构体,

肯定是结构体,因为这个点有行为吗,没有,并且只有2个属性,所以这个时候,我们就用结构体,

那么这个点的坐标,我们怎么来的啊,

原点,我们说是哪1点呢,iOS界面最左上角的点,是原点,

这个原点,x坐标是0,y坐标也是0,

越往右边,x值越大,越往下边,y值越大,

我们定义1个结构体,来表示控件在界面上的坐标,

如果要我们定义的话,该怎么定义,

#typedef struct

{

int x;

int y;

} TestPoint;

这个时候,如果我要声明1个变量来保存这1点的坐标的话,我是不是只需要声明1个TestPoint变量就可以了,

TestPoint p1 = {20 , 30};

p1这个变量,它表示的就是这个按钮的坐标,横坐标是20 , 纵坐标是30,

如果我们真的要去声明1个结构体,来保存这个点的坐标的话,就这么声明就可以了,幸运的是,这个结构体不用我们自己去定义了,因为这个结构体,Foundation框架里面已经定义好了,

在Foundation框架中,已经定义了1个结构体,叫做CGPoint,

CGPoint的签名如下:

typedef struct {

CGFloat x;

CGFloat y;

} CGPoint;

你会发现这个结构体里面有几个属性啊,2个,x和y,这两个属性是什么类型的,CGFloat类型的,那这个CGFloat是个什么东西,

怎么办,是不是点进去看一下啊,

CGFloat的签名如下:

typedef CGFLOAT_TYPE CGFloat;

CGFLOAT_TYPE又是个什么东西,它的签名如下:

#define CGFLOAT_TYPE double;

所以啊,这个CGFloat,实际上就是1个double类型,

这个结构体,CGPoint,一般情况下是用来表示坐标的,

特别是用来表示控件在界面上的位置,

其实还有一个结构体,叫做NSPoint,这个NSPoint是个什么东西,它的签名如下:

typedef CGPoint NSPoint;

实际上NSPoint就是CGPoint,

所以CGPoint和NSPoint是不是都是一样的,

CGPoint与NSPoint都是同1个结构体,

只不过定义了2个名字

二、声明CGPoint变量并初始化的方式

1.第一种方式:CGPoint p1 ;

p1.x = 20;

p1.y = 30;

2.第二种方式:

CGPoint p1 = {20,30};

这时候,它就可以按照顺序,把第一个值赋给我们第一个属性x,把第二个值赋给我们第二个属性y,

3.第三种方式:

CGPoint p1 = {.x = 20 , .y = 30};

4.第四种方式:如果你想创建1个CGPoint结构体变量的话,你可以用Foundation框架中提供的1个函数,

Foundation框架中提供的函数来快速的创建1个CGPoint结构体变量,

CGPointMake(CGFloat x,CGFloat y);

例如,CGPointMake(20,30);

这个时候,这个方法,就会返回1个x的值是20,y的值是30的CGPoint结构体变量,

CGPoint p1 = CGPointMake(20,30);

NSLog(@“p1.x=%lf,p1.y=%lf”,p1.x,p1.y);

输出:p1.x = 20.000000 , p1.y = 30.000000

所以,这个方法,CGPointMake( x , y );

CGPoint p1 = CGPointMake(20,30);

5.还1个函数,叫做NSMakePoint(CGFloat x,CGFloat y)

这个函数,跟CGPointMake函数的功能是1样的,

这个函数返回一个CGPoint结构体变量,我能不能用NSPoint接,可以

因为NSPoint和CGPoint都是1样的,

NSPoing p1 = NSMakePoint(20,30);

所以,也可以用NSMakePoint( x , y );

NSPoint p1 = NSMakePoint(20,30);

我们后面,每天,基本上都要跟这个结构体打交道,我们基本上都不会用前3种方法去声明,因为那样太麻烦了,我们基本上都会用后两种方法去声明,对,用函数,直接用函数,它就会干嘛呢,就会返回这个结构体给我,好了,这就是我们的第1个结构体,叫做CGPoint,或者叫什么呢,叫做NSPoint,它的作用,一般情况下,来表示我们iOS界面上的1个控件的坐标,而我们刚刚讲过,1个控件的坐标,都是这个控件左上角的点,相对于它的父控件原点的1个位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值