-
【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个结构体,来表示控件在界面上的坐标,
如果要我们定义的话,该怎么定义,
{
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个位置
-
相关阅读:
SpringBoot很熟?那手撕一下自定义启动器吧
k8s-Kuboard国产页面管理
maven 私有仓库配置
学信息系统项目管理师第4版系统36_结语
Seata在Liunx环境启动配置指定JVM大小
代码随想录算法训练营第九天|二叉树(截止到合并二叉树)
安装JAVA和java IDEA并汉化过程
助听器算法研究开发源码介绍
LINUX
数据存储,详细讲解
-
原文地址:https://blog.csdn.net/madoca/article/details/128045094