• 【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个位置

  • 相关阅读:
    SpringBoot很熟?那手撕一下自定义启动器吧
    k8s-Kuboard国产页面管理
    maven 私有仓库配置
    学信息系统项目管理师第4版系统36_结语
    Seata在Liunx环境启动配置指定JVM大小
    代码随想录算法训练营第九天|二叉树(截止到合并二叉树)
    安装JAVA和java IDEA并汉化过程
    助听器算法研究开发源码介绍
    LINUX
    数据存储,详细讲解
  • 原文地址:https://blog.csdn.net/madoca/article/details/128045094