Foundation框架学习-结构体

常用的结构体有:
NSRange
NSPoint/CGPoint
NSSize/CGSize
NSRect/CGRect

NSRange

表示某些元素在母体中所处的位置和长度,如果在母体中找不到返回loc=NSNotFound(-1),len=0;

成员:NSUInteger location (NSUInteger本质为:unsigned long)

           NSUInteger length

赋值可调用框架下函数:NSMakeRange(NUIntger loc,NUInteger len);

代码演示:

    NSRange range=NSMakeRange(3, 5); //定义一个NSRange类型的变量range,并初始化range的loc为3,len为5
NSRange应用

代码演示:

    NSString *str=@"my name is itcast";
    NSRange ran=[str rangeOfString:@"name"]; //定义NSRange类型变量ran,并初始化为name在str字符串中的位置及长度
    NSLog(@"loc=%ld,len=%ld",ran.location,ran.length);
    //打印结果为:loc=3,len=4

NSPoint/CGPoint

表示二维空间的一个点。

NSPoint与CGPoint等价(本质为typedef CGPoint  NSPoint),一般用CGPoint,它可跨平台

成员:CGFloat x; (CGFloat本质为:double )

           CGFloat y;

赋值可调用框架下函数:CGPointMake(CGFloat x,CGFloat y);或NSMakePoint(CGFloatx,CGFloat y);

代码演示:

    CGPoint point=CGPointMake(3.5, 2.5); //定义CGPoint类型的变量point并初始化横坐标为3.5,纵坐标为2.5

NSSize/CGSize

表示一个UI元素的尺寸(面积)

成员:CGFloat width; (CGFloat本质为:double )

           CGFloat height;

赋值可调用框架下函数:CGSizeMake(CGFloat x,CGFloat y);或NSMakeSize(CGFloatx,CGFloat y);

 代码演示:

    CGSize size=CGSizeMake(6, 8); //定义CGSize类型的变量size并初始化宽度为6,高度为8

NSRect/CGRect

表示某一位置某个尺寸的UI元素

成员:

          CGPoint origin;

          CGSize size;

赋值可调用框架下函数:CGSizeMake(CGFloat x,CGFloat y,CGFloat width,CGFloat height);或NSMakeSize(CGFloatx,CGFloat y,CGFloat width,CGFloat height);

代码演示:

    CGRect rect=CGRectMake(2, 5, 15, 18); //定义一个CGRect类型的变量size并初始化为在2,5位置宽度为15,高度为18

结构体的常用打印方式

通常将结构体转换为字符串类型打印

代码演示:

    CGPoint point=CGPointMake(3.5,2.5);
    CGSize size=CGSizeMake(6, 8);
    CGRect rect=CGRectMake(2, 5, 15, 18);    
    NSString *str1=NSStringFromPoint(point); //将CGPoint类型转换为NSString类型
    NSString *str2=NSStringFromSize(size); //将CGSize类型转换为NSString类型
    NSString *str3=NSStringFromRect(rect); //将CGRect类型转换为NSString类型
    NSLog(@"point:%@,size:%@,rect:%@",str1,str2,str3);
<pre name="code" class="objc">    //打印结果为:point:{3.5, 2.5},size:{6, 8},rect:{{2, 5}, {15, 18}}
 
 

结构体常用函数

    //判断两个结构体是否相等的函数

    BOOL p=CGPointEqualToPoint(CGPointMake(10, 8), CGPointMake(10, 8)); //判断两个点是否相同
    BOOL s=CGSizeEqualToSize(CGSizeMake(5, 8), CGSizeMake(6, 9)); //判断两个size是否相同
    BOOL r=CGRectEqualToRect(CGRectMake(0, 0, 5, 8), CGRectMake(0, 0, 5, 8)); //判断两个rect是否相同
    /*判断一个点(CGPoing)是否在一个区域(CGRect)内的函数CGRectContainPoint,此函数定义在CoreGraphics框架中,使用前需导入此框架*/   
    CGPoint point=CGPointMake(3.5,8);
    CGRect rect=CGRectMake(2, 5, 15, 18);
    BOOL cont=CGRectContainsPoint(rect, point); NSLog(@"\npoint是否相同:%d\nsize是否相同%d\nrect是否相同:%d\npoint是否在rect内:%d",p,s,r,cont);
    //输出结果为:point是否相同:1 size是否相同0 rect是否相同:1 point是否在rect内:1
 
 
 
 
 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值