Objective-C 【NSPoint&CGPoint-NSSize&CGSize-NSRect&NSRect】

1、NSPoint 和 CGPoint

①他们都是结构体,保存坐标点信息(为什么加NS前缀,只是为了统一起来,但NSPoint是结构体不是类)
②NSPoint 和 CGPoint 其实是一个东西,都是表示二维平面的一个点

代码:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
//        NSPoint原型(结构体,之所以NS前缀,是为了象征性保持一致,但是NSPoint不是类,是结构体)
//        显然 NSPoint 和 CGPoint 是一个东西
//        struct CGPoint {
//            CGFloat x;
//            CGFloat y;
//        };
        
//        初始化方式①
        NSPoint point1={1.2,4.5};//point也不是对象,所以前面不用加  *  
        NSLog(@"x = %.2f,y = %.2f",point1.x,point1.y);
//        打印结果:
//        2015-09-15 20:00:22.708 NSPoint[2167:197921] x = 1.20,y = 4.50
        
//        初始化方式②
        NSPoint point2;//point2的两个坐标值其实看底层都是double类型的
        point2.x =123.2222;
        point2.y =4.2;
//        将整个point2对象以字符串的格式输出(精度无法控制)
        NSLog(@"%@",NSStringFromPoint(point2));
//        打印结果:(精度问题,导致了结果如此,如果不想让他这么长,就用上面的方式输出)
//        2015-09-15 20:00:22.709 NSPoint[2167:197921] {1.2222200000000001, 4.2000000000000002}
        
//        初始化方式③
        NSPoint point3=NSMakePoint(12.4, 43.2);//调用NSMakePoint函数初始化,注意这里是 函数,而不是方法
//        NS_INLINE NSPoint NSMakePoint(CGFloat x, CGFloat y) {
//            NSPoint p;
//            p.x = x;
//            p.y = y;
//            return p;
//        }
        NSLog(@"%@",NSStringFromPoint(point3));
        
//        CGPoint 的初始化
//        CGPoint point1={2,4}; //这样写就和上面NSPoint初始化的point1重名了,会提示错误 Redefinition of 'point1' ,意思是重复定义了这个点。所以更加说明了NSPoint和CGPoint是一回事
        
        CGPoint p1={3.3,4.5};
        
        CGPoint p2;
        p2.x=1.2;
        p2.y=3.4;
        
        CGPoint p3=NSMakePoint(1.2, 3.3);
        
//        同样和上面一样,CGPoint创建的变量也能用三种初始化的方式初始化变量。说明了CGPoint和NSPoint是一回事。
    }
    return 0;
}

2、NSSize和CGSize

struct CGSize {
  CGFloat width;
  CGFloat height;
};

他们两个也是一回事,表示二维平面中某个物体的尺寸(宽度和高度)

3、NSRect和NSRect

struct CGRect {
  CGPoint origin;
  CGSize size;
};

他们两个也是一回事,表示二维平面中某个物体的位置和尺寸

(由于详细介绍了NSPoint 和 CGPoint,剩下两组就不一一细说了。要说明的是,苹果官方推荐的是CG开头的结构体定义)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值