A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jack-xie 中级黑马   /  2014-10-10 12:18  /  1245 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  一,结构体:  NSRange
1.简单介绍:
NSRange用来表示A在B中所占的范围
它有两个成员,location和length,它们的类型都是NSUinteger(unsigned long)无符号长整形
例举:字符串:@"I love OC";中,"love"这个字符的范围:location = 2,range = 4

2.创建NSRange类型的变量
NSRange r; // 定义变量后分别给成员赋值  (不推荐使用)
r.location = 2;
r.length = 3;
NSRange r1 = {2,3};// 定义同时初始化,前面是location,后面是length (不推荐使用)
NSRange r2 = {.length = 3,.location = 2};// 定义同时初始化  顺序可自定义 (不推荐使用)
NSRange range = NSMakeRange(2, 3);// (使用函数创建)最常用的方式,前面是location,后面是length
// 提别注意:NSRange是使用了typedef的结构类型,不是类,所以定义变量时不用加 *


3.查找某个字符串在字符串中的范围
NSString *str =  @"I love OC";//
NSRange range = [str rangeOfString:@"love"];//rangeOfString 字符串的范围
NSLog(@"range:%@",NSStringFromRange(range));//NSStringFromRange 将范围转为字符串

二,结构体:
      NSPoint\CGpoint  (x,y)
      NSSize\CGSize    (width,height)
      NSRect\CGRect    (CGPoint,CGSize) == (x,y,with,height)
1.简单介绍:
CGPoint代表图像中一个元素的位置,它有两个成员 x 和 y,类型都是CGFloat(double)
CGSize代表一个元素的尺寸,它有两个成员 width 和 height,类型都是CGFloat(double)
CGRect代表一个矩形,它有两个成员CGPoint origin 和 CGSize size ,前者代表矩形左上角的坐标位置,后者代表矩形的宽和高


2.创建表量:
1)使用创建一般结构提的方式创建:
CGPoint p = {10,30};// 定义时直接初始化
CGPoint p1;// 先定义,后初始化
p1.x = 10;
p1.y = 30;
CGSize s = {20,40};// 定义时直接初始化
CGSize s1;// 先定义,后初始化
s1.width = 20;
s1.height = 40;
CGRect r = {{10,30},{20,40}};// 定义时直接初始化
CGRect r1 = {p,s};// 这个初始化方法等同于上个初始化的值
CGRect r2;// 先定义,后初始化
r2.origin.x = 10;
r2.origin.y = 30;
r2.size.width = 20;
r2.size.height = 40;

3.使用函数快速创建:
CGPoint p1 = CGPointMake(10, 30);
CGPoint p2 = NSMakePoint(10, 30);
CGSize s1 = CGSizeMake(20, 40);
CGSize s2 = NSMakeSize(20, 40);
CGRect r1 = CGRectMake(10, 30, 20, 40);
CGRect r2 = NSMakeRect(10, 30, 20, 40);

CGPointZero == CGPointMake(0, 0);
CGSizeZero == CGSizeMake(0, 0);
CGRectZero == CGRectMake(0, 0, 0, 0);

4.常用函数
CGPointEqualToPoint(p1, p2);// 比较两个点的位置是否相同
CGSizeEqualToSize(s1, s2);// 比较两个尺寸是否相同
CGRectEqualToRect(r1, r2);// 比较两个矩形是否占据同样的位置
CGRectContainsPoint(r,p);// 判断 r 这个矩形范围是否包含 p 这个点

BOOL equal =  CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
NSLog(@"%d",equal);// 相等返回 1  不相等返回 0

BOOL contain = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(80, 80));
NSLog(@"%d",contain);// 包含返回 1  不包含返回 0

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

2 个回复

倒序浏览
ifo 中级黑马 2014-10-10 13:00:59
沙发
看来技术贴真是厉害啊,我也要写
回复 使用道具 举报
顶。。。。还没学到foundation,留着有用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马