• 【CGSize Objecive-C语言】


    一、我要你现在声明1个变量,来保存1个按钮的大小

    1.声明1个变量啊,来保存这个控件的大小,

    大小是什么啊,是不是这个控件的宽度和高度吧

    要描述1个控件的大小,无非就两个数据嘛,1个是宽度,1个是高度

    声明1个变量,来保存某个控件的大小,

    1个控件的大小,无非就是两个数据,哪两个数据,1个是宽度,1个是高度,

    所以,我想用1个东西,来描述这个宽度和高度合在一起封装1下,用类还是用结构体更合适啊,是不是结构体啊,

    typedef struct {

    double width;

    double height;

    } TestSize;

    假如,1个按钮,宽度是50,高度是20,我要声明1个变量,来保存这个按钮的大小

    TestSize size = {50,20};

    如果你以后,真的要声明1个变量,来保存1个按钮的大小的话,不用去定义这个结构体了,因为Foundation框架已经帮你定义好了,

    叫做CGSize,这个结构体的签名如下:

    typedef struct {

    CGFloat width;

    CGFloat height;

    } CGSize;

    这个结构体有2个属性,1个宽度,1个高度,什么类型的,是不是double类型的啊,

    例如,CGSize size = {100,30};

    2.当然,还有一个结构体,叫做NSSize,你也猜到了,跟CGSize一样

    这个结构体的定义如下:

    typedef CGSize NSSize;

    这个NSSize和CGSize是同一个结构体,只不过定义了两个名字

    3.这个CGSize结构体,一般情况下,用来表示1个控件的大小,

    CGPoint是来表示控件的坐标,CGSize是来表示控件的大小

    二、CGSize声明并初始化的方式

    1.第一种方式:CGSize size;

    size.width = 100;

    size.height = 30;

    2.第二种方式:CGSize size = {100,30};

    3.第三种方式:CGSize size = {.width = 100 , height = 30};

    4.第四种方式:使用Foundation框架中提供的函数,来快速的得到1个CGSize结构体变量

    这个函数叫做CGSizeMake(CGFloat width , CGFloat height)

    例如,CGSizeMake(100,30);

    这个时候,它就返回1个CGSize类型的结构体变量,

    CGSize size = CGSizeMake(100,30);

    这个size的宽度就是100,高度就是30,

    5.第五种方式:还有另一个函数,叫做NSMakeSize(CGFloat w,CGFloat h)

    例如,NSMakeSize(100,30);

    CGSize size = NSMakeSize(100,30);

    三、讲一个小案例

    1.例如,我这儿有1个iOS界面,界面上有1个按钮,我想让你声明1个变量,来保存1个按钮,你用什么,用个类吧,为什么用类呢,因为这个按钮有很多属性,有什么属性:

    1)坐标

    2)大小

    3)背景颜色

    4)背景图片

    这个按钮还有行为:

    1)显示的行为

    2)隐藏的行为

    3)有点的行为

    所以,如果说,我要声明1个封装数据,去表示1个按钮,那绝对是用1个类,

    假如这个类,叫做TestButton类,在TestButton.h文件中:

    #import

    //按钮类

    @interface TestButton : NSObject

    //按钮类有哪些属性呢,我们刚刚说过,每1个按钮是不是有自己的坐标,所以

    //当前按钮对象的坐标

    @property(nonatomic,assign)CGPoint point;

    //按钮除了有坐标,还有什么,是不是还有大小,所以是不是也应该把这个按钮的大小也作为1个属性吧

    //当前按钮的大小

    @property(nonatomic,assign)CGSize size;

    //这个按钮还有什么属性,每1个按钮上面是不是都有1个文本

    //当前按钮对象上的文本

    @property(nonatomic,strong)NSString *text;

    //按钮还有什么,还有行为

    - (void)show;

    - (void)hide;

    在TestButton.m文件中,

    #import “TextButton.h”

    @implementation TextButton

    - (void)show{

    NSLog(@“我显示出来了,我的坐标是%lf,%lf ,我的大小是%lf,%lf”,

    _point.x,

    _point.y,

    _size.width,

    _size.height

    );

    - (void)hide{

    NSLog(@“我隐藏了”);

    }

    @end

    这样,我们这个方法就搞定了,这时候,你如果想要1个按钮,就创建对象就可以了吧

    这个时候,我们不仅有1个按钮,最外面还有1个iOS界面,这个界面,你觉得是个什么东西,肯定也是个类啦,因为界面有什么,它是不是自己也有坐标,自己是不是也有大小,自己是不是也有行为,有显示的行为,是不是,我们再来1个界面类

    来一个TestView类,在TestView.h文件中,

    #import

    #import “TestButton.h”

    //iOS界面

    @interface TestView : NSObject

    @property(nonatomic,assign)CGPoint point;

    @property(nonatomic,assign)CGSize size;

    //界面上面是不是有1个按钮啊,也就是说,这个按钮是谁的,是这个界面的,所以是不是应该把按钮当作这个界面的1个属性啊

    //所以,把TestButton类引进来

    @property(nonatomic,strong)TestButton *btn;

    //它自己有显示的方法,我就不说了,下面我们用1下,该怎么用,在main.m文件中,

    #import

    #import “TestView.h”

    int main(){

    //我现在要创建1个iOS界面,在界面上面,我要创建1个按钮

    //先是不是来创建1个界面啊,

    //view1就是1个iOS界面

    TestView view1 = [[TestView alloc] init];

    //再设这个界面的属性,显示这个界面的坐标

    view1.point = CGPointMake(0,0);

    view1.size = CGSizeMake(1920,1080);

    //现在,我要往这个界面上添加1个按钮

    TestButton *btn = [[TestButton alloc] init];

    btn.point = CGPointMake(100,100);

    btn.size = CGSizeMake(100,30);

    btn.text = @“点我呀”;

    //这个时候,这个按钮是不是就出现在上面了,没有,没有啊,是不是没有跟它建立关系啊,

    view1.btn = btn;

    //这样才是设置关系了,按钮才出现在上面了,

    //但是,你这么设计界面的话,这上面是不是只能有1个按钮,那我要是有两个按钮,该怎么办呢

    //我是不是最好用1个数组啊,用1个数组来装控件啊

    //所以,来一个NSMutableArray吧,因为我要动态的往里加嘛,叫subViews,在TestView.h文件中

    @property(nonatomic,strong)TestButton *btn;

    //这句话,改成

    @property(nonatomic,strong)NSMutableArray *subViews;

    //这个时候,如果我要往里面加控件的话,我要把这个控件btn,往这个view1,iOS界面里面加,我怎么写:

    在main.m文件中

    [view1.subViews addObject:btn];

    //这个时候,我就把这个btn加进去了吧,

    //如果我又来个btn1,

    TestButton *btn1 = [[TestButton alloc] init];

    btn1.point = CGPointMake(200, 200);

    btn1.size = CGSizeMake(100, 30);

    btn1.text = @“注册”;

    [view1.subViews addObject:btn1];

    //这时候,我们这个iOS界面上,有几个按钮了,两个

    好了,以上就是CGSize的用法

  • 相关阅读:
    C++11 lambda
    【Vue】Pinia管理用户数据
    如何集成 Spring Boot实现 MyCat读写分离?
    RestTemplate获取json数组
    Docker基本操作
    子树的大小
    MinGW-w64下载文件失败the file has been downloaded incorrectly!
    Latex 辅助写作工具
    P1540 [NOIP2010 提高组] 机器翻译(模拟)
    XSS线上靶场---Warmups
  • 原文地址:https://blog.csdn.net/madoca/article/details/128053378