Oc为我们提供了四个结构体,定义的变量可以存在栈上和堆上。
分别是:范围:NSRange , 几体数据类型 : 点(NSPoint) 尺寸(NSsize) 区域(NSRect);
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
<一> NSRange: 用来表示相关事物的范围。
结构体原形:typedefstruct _NSRange
{
NSUInteger location;
NSUInteger length;
}NSRange;
三种赋值方式:
NSRange range;
//c语言结构体变量的赋值的方法
range.location=17;
range.length=4;
NSLog(@"%lu %lu",range.location, range.length);
//c语言结构体变量初始化的方法
NSRange range1={17,4};
NSLog(@"%lu %lu",range1.location, range1.length);
//oc的赋值方法 //最常用
range=NSMakeRange(17,4);
NSLog(@"%lu %lu",range1.location, range1.length);
cocoa提供的一个快捷函数NSMakeRange();
使用NSMakeRange()的好处是可以在任何能够使用函数的地方使用它,例如在方法调用中将其当成参数传递。
<二>NSPoint 代带平面上的点
结构体原形:
typedefstruct _NSPoint
{
float x;
float y;
}NSPoint;
三种赋值方式:
NSPoint point;
point.x=10;
point.y=20;
NSLog(@"%f,%f",point.x,point.y);
NSPoint point1={10.3,20.6};
NSLog(@"%f,%f",point1.x,point1.y);
point=NSMakePoint(10.5,11.3);
<三> NSSize 用来存储长度和宽度。尺寸。
结构体原形:
typedef struct _NSSize
{
float width;
float height;
}NSSize;
三种赋值方式:
NSSize size;
size.width=15;
size.height=20;
NSLog(@"%f %f",size.width,size.height);
NSSize size1={15,20};
NSLog(@"%f %f",size1.width,size1.height);
size=NSMakeSize(20,30);
NSLog(@"%f %f",size.width,size.height);
--------------------------------------------------------------------------------------------------------------
<四> NSRect 用来表示区域。
结构体原形:
typedef struct _NSRect
{
NSPoint origin;
NSSize size;
}NSRect;
三种赋值方式:
NSRect rect;
rect.origin.x=15;
rect.origin.y=20;
rect.size.width=8;
rect.size.height=15;
NSRect rect1={15,20,8,15};
rect =NSMakeRect(15,20,15,20);
NSSize size=NSMakeSize(50,60);
NSLog(@"%f %f ",size.width,size.height);
NSRect rect=NSMakeRect(5.3,4.6, 20.5, 40.5);
NSLog(@"%f %f %f %f",rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSRange range=NSMakeRange(50, 60);
NSString *rangeString=NSStringFromRange(range);
NSLog(@"%@",rangeString);
//NSPoint/CGPoing 是一样的
NSPoint point=NSMakePoint(0, 0);
//CGPoint dd=CGPointMake(0, 0);
NSString *pointString=NSStringFromPoint(point);
NSLog(@"%@",pointString);
//CGSize/NSSize是一样的
CGSize size=CGSizeMake(300, 200);
//NSSize size1=NSMakeSize(300, 200);
NSString *sizeString=NSStringFromSize(size);
NSLog(@"%@",sizeString);
//CGRect/NSRect是一样的
CGRect rect=CGRectMake(0,0, 80, 90);
//NSRect rect1=NSMakeRect(0, 0, 50, 60);
NSString *rectString=NSStringFromRect(rect);
NSLog(@"%@",rectString);
//表示的都是零
CGPointZero;
CGSizeZero;
CGRectZero;
//判断是否相等
//使用这些函数的前提是添加CoreGraphics 框架
BOOL b= CGRectEqualToRect(CGRectMake(0, 0, 80, 80), CGRectMake(0, 0, 80, 80));
CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>);
CGPointEqualToPoint(<#CGPoint point1#>, <#CGPoint point2#>);
//判断左边是否包含右边的
CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(60, 45));
}
return 0;
}