Objective-C中经常使用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect

1   NSRange

NSRange 的原型为

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

NSMakeRange的函数

NS_INLINEz是内联函数

     typedef NSRange *NSRangePointer;

     NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
NSRange r;
r.location = loc;
r.length = len;
return r;
}

用法

 //NSRange表示的是范围
NSRange range;
range.location = 18;
range.length = 34; NSLog(@"location is %zi",range.location);
NSLog(@"length is %zi",range.length); //高速创建
range = NSMakeRange(8, 10);
NSLog(@"location is %zi",range.location);
NSLog(@"length is %zi",range.length); //NSStringFromRange将上面的结构体转化成字符串类型,打印出来 NSString* str1 = NSStringFromRange(range); //%@是一个OC对象,range代表的是一个结构体,str是一个OC对象
NSLog(@"rang is %@",str1);

2  NSPoint

NSPoint的原型

struct CGPoint {
CGFloat x;
CGFloat y;
};

NSMakePoint函数

NS_INLINE NSPoint NSMakePoint(CGFloat x, CGFloat y) {
NSPoint p;
p.x = x;
p.y = y;
return p;
}

CGPointMake函数

CGPointMake(CGFloat x, CGFloat y)
{
CGPoint p; p.x = x; p.y = y; return p;
}

用法

//NSPoint指的是位置
NSPoint point; //给结构体里面的点进行赋值
point.x = 10;
point.y = 10; //高速创建点
point = NSMakePoint(10, 18); //常见的是CGPointMake创建点的函数
point = CGPointMake(29, 78);
NSString* str2 = NSStringFromPoint(point);
NSLog(@"point is %@",str2);

3  CGSize

CGSize的原型

struct CGSize {
CGFloat width;
CGFloat height;
};

NSMakeSize函数

NS_INLINE NSSize NSMakeSize(CGFloat w, CGFloat h) {
NSSize s;
s.width = w;
s.height = h;
return s;
}

CGSizeMake函数

CGSizeMake(CGFloat width, CGFloat height)
{
CGSize size; size.width = width; size.height = height; return size;
}

用法

 NSSize size;

    size.width = 100;
size.height = 12;
size = NSMakeSize(12, 12);
size = CGSizeMake(11, 11); NSString* str3 = NSStringFromSize(size);
NSLog(@"%@",str3);

4 CGRect

CGRect的原型

struct CGRect {
CGPoint origin;
CGSize size;
};

CGRectMake的函数

CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x; rect.origin.y = y;
rect.size.width = width; rect.size.height = height;
return rect;
}

NSMakeRect函数

NS_INLINE NSRect NSMakeRect(CGFloat x, CGFloat y, CGFloat w, CGFloat h) {
NSRect r;
r.origin.x = x;
r.origin.y = y;
r.size.width = w;
r.size.height = h;
return r;
}

用法

 //既包括了尺寸大小和位置
NSRect rect;
rect.origin.x = 12;
rect.origin.y = 14;
rect.size.width = 12;
rect.size.height = 15; //高速创建方法
rect = CGRectMake(12, 12, 12, 12);
rect = NSMakeRect(11, 11, 11, 11); //转化成字符串打印出来
NSString* str5 = NSStringFromRect(rect);
NSLog(@"rect is %@",str5);

Objective-C中经常使用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect的更多相关文章

  1. Objective-C中常用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect

    本节要点:红色标记 需要记下来 1   NSRange typedef struct _NSRange {     NSUInteger location;     NSUInteger length ...

  2. Linux中表示“时间”的结构体和相关函数

    转载于:http://blog.chinaunix.net/uid-25909722-id-2827364.html      Linux中表示“时间”的结构体和相关函数 2011-09-13 17: ...

  3. FFMPEG中最要害的结构体之间的关系

    FFMPEG中最关键的结构体之间的关系 http://www.myexception.cn/program/1404591.html FFMPEG中结构体很多.最关键的结构体可以分成以下几类: a)  ...

  4. Swift面向对象基础(上)——Swift中的类和结构体(下)

    学习来自<极客学院> import Foundation class User { var name:String var age:Int init(name:String,age:Int ...

  5. Swift面向对象基础(上)——Swift中的类和结构体(上)

    学习来自<极客学院> import Foundation //1.定义类和结构体 /* [修饰符]calss 类名{ 零到多个构造器 零到多个属性 零到多个方法 零到多个下标 } 修饰符可 ...

  6. 问题解决——在结构体中使用set保存结构体数据

    =====================声明========================== 本文原创,转载请明确的注明出处和作者,并保持文章的完整性(包括本声明部分). 本文链接:http:/ ...

  7. C语言中的系统时间结构体类型

    在C语言涉及中经常需要定时触发事件,涉及到获取系统时间,其结构体类型有多种.Unix/Linux系统下有以下几种时间结构: 1.time_t 类型:长整型,一般用来表示从1970-01-01 00:0 ...

  8. FFMPEG中最关键的结构体之间的关系

    FFMPEG中结构体很多.最关键的结构体可以分成以下几类: a)        解协议(http,rtsp,rtmp,mms) AVIOContext,URLProtocol,URLContext主要 ...

  9. C语言中内存对齐与结构体

    结构体 结构体是一种新的数据类型,对C语言的数据类型进行了极大的扩充. struct STU{ int age; char name[15]; }; struct STU a; //结构体实例 str ...

随机推荐

  1. 利用java concurrent 包实现日志写数据库的并发处理

    一.概述 在很多系统中,往往需要将各种操作写入数据库(比如客户端发起的操作). 最简单的做法是,封装一个公共的写日志的api,各个操作中调用该api完成自己操作日志的入库.但因为入数据库效率比较低,如 ...

  2. 有关oppo蝴蝶解锁的三D技术

    oppo手机的界面设计也是很漂亮的.在很多界面中使用了3D技术塑造出了大量华丽的效果.在蝴蝶解锁中使用了两个对称的三D变幻,宛如蝴蝶翅膀上美丽的花纹.在受到用户点击后,随风缓慢上下扇动,充满浪漫的动感 ...

  3. SqlServer和Oracle中一些常用的sql语句6 存储过程

    --不带参数的存储过程 CREATE procedure proc_sql1 as begin declare @i int set @i=0 while @i<26 begin print c ...

  4. Android应用之基本的组件(一)

    请大家伙多多指教: 邮箱:weimingweicom@sina.com 请关注:ailiandeziwei 总的页面: 注意:按钮间方法的改变需要:     android:onClick=" ...

  5. #AOS应用基础平台# 添加了用户自己定义快捷菜单在平铺布局下的用户自己定义排序管理

    #AOS开发平台# 添加了用户自己定义快捷菜单在平铺布局下的用户自己定义排序管理.

  6. HBase概念学习(七)HBase与Mapreduce集成

    这篇文章是看了HBase权威指南之后,依据上面的解说搬下来的样例,可是略微有些不一样. HBase与mapreduce的集成无非就是mapreduce作业以HBase表作为输入,或者作为输出,也或者作 ...

  7. 用内存流 文件流 资源生成客户端(Delphi开源)

    正文:很多木马生成器就是用的内存流和文件流生成客户端的,废话不多说了,代码如下: unit Main; interface usesWindows, Messages, SysUtils, Varia ...

  8. WPF Popup 置顶问题

    原文 WPF Popup 置顶问题 问题: 使用wpf的popup,当在popup中弹出MessageBox或者打开对话框的时候,popup总是置顶,并遮住MessageBox或对话框. 解决: 写如 ...

  9. MYSQL查询表结构

    mysql查看表结构命令,如下: desc 表名;show columns from 表名;describe 表名;show create table 表名; use information_sche ...

  10. python发送post和get请求

    python发送post和get请求 get请求: 使用get方式时,请求数据直接放在url中. 方法一. import urllib import urllib2 url = "http: ...