黑马程序员_Foundation框架基础知识(一)常用结构体

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!


一.NSRange

1成员组成:

typedef struct _NSRange {
      NSUInteger location; 
      NSUInteger length;
} NSRange;

 1>成员类型说明: typedef unsigned long NSUInteger;


2.NSRange类型的结构体用于表示范围。

程序示例 1:


int main(int argc, const char * argv[])
{
     // 表示@"i love you"字符串中love的范围
     NSRange range = {2, 4}; // 在实际开发中不用这种方式,可读性差。
    
     NSRange range1 = {.location = 2, .length = 4}; // 不够精简,冗余。
    
    //常用的方法是使用Foundation框架自带函数
     NSRange range2 = NSMakeRange(2,4);

     return 0;
}


3.常用方法和函数

 1>使用rangeOfString:方法获取字符串中字串的范围。

程序示例 2:

    // 创建一个字符串
    NSString *str = @"i love you";
    
    // 获取字符串中@"love"子串的范围
    NSRange range = [str rangeOfString:@"love"];

 2>注意:

  1)rangeOfString:方法执行过程中如果子字串不存在,返回的range.length=0、range.location=NSNotFound。NSNotFound是一个枚举常量值为-1。(NSNotFound是按无符号long类型整数保存的,所以打印的话值会非常大,如果按有符号整数打印是-1)


 3>打印结构体:

<span style="font-size:18px;">    // 打印一个结构体,也就是打印他的成员。
    // 开发中,是先将结构体转换成字符串,然后再打印
    NSRange range = NSMakeRange(0, 2);
    NSString *str1 = NSStringFromRange(range);
    NSLog(@"%@", str1);</span>


二.NSPoint和CGPoint

1.成员组成:

 struct CGPoint {
      CGFloat x; 
      CGFloat y;
 };

 typedef CGPoint NSPoint;

 1>成语类型说明 : typedef CGFLOAT_TYPE CGFloat; CGFLOAT_TYPE是double


2.这两个类表示一个点的坐标,NSPoint与CGPoint等价。在开发中常用到CGPoint。

程序示例 3:

    // 表示一个点的坐标
    CGPoint p1 = NSMakePoint(10,10);
   
    CGPoint p2 = CGPointMake(10,10); // 开发中常用这个函数。

3.常用方法和函数

 1>打印结构体

    // 打印一个结构体,也就是打印他的成员。
    // 开发中,是先将结构体转换成字符串,然后再打印
    CGPoint point = CGPointMake(10, 10);
    NSString *str2 = NSStringFromPoint(point);
    NSLog(@"%@", str2);

 2>比较两个点是否相同(x值、y值是否相等):bool CGPointEqualToPoint (CGPoint point1, CGPoint point2);



三.NSSize和CGSize

1.成员组成:

struct CGSize {
      CGFloat width;
      CGFloat height;
 };
 typedef struct CGSize CGSize;
 
 typedef CGSize NSSize;

 1>成员类型说明: typedef CGFLOAT_TYPE CGFloat; CGFLOAT_TYPE是double


2.这两个类在开发中常用作表示一个UI元素的尺寸。NSSize和CGSize等价。常用CGSize。

程序示例 4:

    // 表示一个UI元素的尺寸
    CGSize s = NSMakeSize(10,10);
    
    NSSize s1 = CGSizeMake(20,15);
    
    CGSize s3 = CGSizeMake(10, 10); //常用这种方式

3.常用方法和函数

1>打印结构体

    // 打印一个结构体,也就是打印他的成员。
    // 开发中,是先将结构体转换成字符串,然后再打印
    CGSize size = CGSizeMake(20, 20);
    NSString *str3 = NSStringFromSize(size);
    NSLog(@"%@", str3);

 2>比较两个尺寸是否相同:bool CGSizeEqualToSize (CGSize size1, CGSize size2);


四.NSRect和CGRect

1.成员组成:

struct CGRect {
      CGPoint origin;
      CGSize size;
 };
 typedef struct CGRect CGRect;
 
 typedef CGRect NSRect;


2.这两个类在开发中用于表示一个UI元素的位置及尺寸,CGRect和NSRect等价。常用CGRect

程序示例 5:

    // 定义一个CGRect\NSRect
    CGRect r = CGRectMake(10, 15, 10, 10);
    CGRect r1 = NSMakeRect(10, 20,4,5);
    
    CGRect r2 = {{0,0}, {20,10}};
    
    CGPoint p1 = NSMakePoint(10,10);
    CGSize s = NSMakeSize(10,10);
    CGRect r3 = {p1 , s};

3.常用方法和函数

1>打印结构体

    // 打印一个结构体,也就是打印他的成员。
    // 开发中,是先将结构体转换成字符串,然后再打印
    NSRect rect = CGRectMake(0, 0, 2, 2);
    NSString *str4 = NSStringFromRect(rect);
    NSLog(@"%@", str4);

2>比较两个CGRect是否相同:bool CGRectEqualToRect (CGRect rect1, CGRect rect2);


3>判断1个CGRect内是否包含某个点: CGRectContainsPoint(CGRect rect, CGPoint point)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值