您的位置:首页 > 其它

OC基础-Foundation——常用结构体 (NSRange 、NSPoint、NSsize、NSRect)

2014-11-21 14:24 483 查看
Oc为我们提供了四个结构体,定义的变量可以存在栈上和堆上。
分别是:范围:NSRange ,  几体数据类型 : 点(NSPoint) 尺寸(NSsize) 区域(NSRect);

----------------------------------------------------------------------------------------------------------------------------------------------------------------------
<一> NSRange:   用来表示相关事物的范围。

结构体原形:typedefstruct _NSRange
{
NSUInteger location;
NSUInteger length;
}NSRange;

NSRange:(用于存储单词或语句,在里面的位置)
location:起始位置,
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);
NSLog(@"%f,%f",point.x,point.y);
注:x,y是值是float类型的。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
<三>   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 {
一般的CGPoint之类可以直接用,但是比较高级的函数需要加入CoreGraph框架
<img src="http://img.blog.csdn.net/20150428234421172?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmFvamllMTAyMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

        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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: