CGGeometry.h文件是用C语言实现的一个封装了许多常用几何方法的文件。

一、几个常用结构体

struct CGPoint {

CGFloat x;

CGFloat y;

};

定义一个点,设置x坐标和y坐标

struct CGSize {

CGFloat width;

CGFloat height;

};

定义一个尺寸,设置宽度和高度

struct CGVector {

CGFloat dx;

CGFloat dy;

};

定义一个二维矢量

struct CGRect {

CGPoint origin;

CGSize size;

};

定义一个矩形

二、几个系统定义的量

const CGPoint CGPointZero

零点,与CGPointMake(0, 0)等效

const CGSize CGSizeZero

零尺寸,与CGSizeMake(0, 0)等效

const CGRect CGRectZero

零矩形,与CGRectMake(0, 0, 0, 0)等效

const CGRect CGRectNull

空矩形,这个和零矩形并不相同,当我们返回两个不相交矩形的交集时,会返回空矩形。

const CGRect CGRectInfinite

无限的矩形

三、一些常用方法

CGPoint CGPointMake(CGFloat x, CGFloat y);

创建一个点

CGSize CGSizeMake(CGFloat width, CGFloat height);

创建一个尺寸

CGVectorMake(CGFloat dx, CGFloat dy);

创建一个矢量

CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width,

CGFloat height);

创建一个矩形

CGFloat CGRectGetMinX(CGRect rect);

获得矩形最左边的x值

CGFloat CGRectGetMidX(CGRect rect);

获取矩形中点的x值

CGFloat CGRectGetMaxX(CGRect rect);

获取矩形最右端的x值

CGFloat CGRectGetMinY(CGRect rect);

获取矩形最上端的y值

CGFloat CGRectGetMidY(CGRect rect);

获取矩形中心点的y值

CGFloat CGRectGetMaxY(CGRect rect);

获取矩形最下端的y值

CGFloat CGRectGetWidth(CGRect rect);

获取矩形宽度

CGFloat CGRectGetHeight(CGRect rect);

获取矩形高度

bool CGPointEqualToPoint(CGPoint point1, CGPoint point2);

判断两个点是否相等

bool CGSizeEqualToSize(CGSize size1, CGSize size2);

判断两个尺寸是否相等

bool CGRectEqualToRect(CGRect rect1, CGRect rect2);

判断两个矩形是否相等

CGRect CGRectStandardize(CGRect rect);

根据一个矩形创建一个标准的矩形

bool CGRectIsEmpty(CGRect rect);

判断是否为零矩形

CGRectIsNull(CGRect rect);

判断是否为空矩形

bool CGRectIsInfinite(CGRect rect);

判断是否为无限矩形

CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy);

创建一个内嵌的矩形,中心和rect参数的中心一样,dx,dy对应内嵌的宽度和高度

比如:CGRect rect= CGRectInset(CGRectMake(0, 0, 100, 100), 10, 10);

会创建出的rect为(10,10,80,80),dx,dy也可以为负值,则是创建出来的矩形会大于原矩形范围。

CGRect CGRectIntegral(CGRect rect)

根据一个矩形,返回四个参数都是整数的矩形

CGRect CGRectUnion(CGRect r1, CGRect r2);

返回两个矩形的并集

CGRect CGRectIntersection(CGRect r1, CGRect r2);

返回两个矩形的交集,如果没有交集,返回空矩形

CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy);

返回一个矩形,偏移量相对于rect

void CGRectDivide(CGRect rect, CGRect *slice, CGRect *remainder,

CGFloat amount, CGRectEdge edge);

这个函数用来分割矩形,参数rect是源矩形,slice和remainder是分割后的两部分矩形,amount是分割线,edge是分割选项。

注意:1、edge是一个宏,定义了分割的方式如下:

1
2
3
4
5
6
7
8
9
10
typedef CF_ENUM(uint32_t, CGRectEdge) {
  //从x的最小处进行垂直分割
  CGRectMinXEdge, 
  //从y的最小处进行水平分割
  CGRectMinYEdge, 
  //从x最大处进行垂直分割
  CGRectMaxXEdge,
  //从y最大处进行水平分割
  CGRectMaxYEdge
};

2、slice和remainder是地址。

3、举例如下,将会分割出两个矩形分别为(40,0,60,100)(0,0,40,100);

1
2
3
4
CGRect rect = CGRectMake(0, 0, 100, 100);
    CGRect slice ;
    CGRect remainder;
    CGRectDivide(rect, &slice, &remainder, 60, CGRectMaxXEdge);

bool CGRectContainsPoint(CGRect rect, CGPoint point);

判断点是否在矩形内

bool CGRectContainsRect(CGRect rect1, CGRect rect2);

判断矩形1是否包含矩形2

bool CGRectIntersectsRect(CGRect rect1, CGRect rect2);

判断矩形1和矩形2是否相交

CFDictionaryRef CGPointCreateDictionaryRepresentation(CGPoint point);

返回一个表示点的字典

bool CGPointMakeWithDictionaryRepresentation(CFDictionaryRef dict,

CGPoint *point);

将字典转换为点

CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size);

返回一个表示尺寸的字典

bool CGSizeMakeWithDictionaryRepresentation(CFDictionaryRef dict,

CGSize *size) ;

将字典转换为尺寸

CFDictionaryRef CGRectCreateDictionaryRepresentation(CGRect);

返回一个表示矩形的字典

bool CGRectMakeWithDictionaryRepresentation(CFDictionaryRef dict,

CGRect *rect);

将字典转化为矩形

IOS开发几何类方法 CGGeometry.h文件的更多相关文章

  1. iOS开发拓展篇—封装音频文件播放工具类

    iOS开发拓展篇—封装音频文件播放工具类 一.简单说明 1.关于音乐播放的简单说明 (1)音乐播放用到一个叫做AVAudioPlayer的类 (2)AVAudioPlayer常用方法 加载音乐文件 - ...

  2. IOS开发--数据持久化篇之文件存储(一)

    前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不 ...

  3. 读书笔记-详解C程序开发中 .c和.h文件的区别

    一个简单的问题:.c和.h文件的区别 学了几个月的C语言,反而觉得越来越不懂了.同样是子程序,可以定义在.c文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢? 2楼: 子程序不要定 ...

  4. CGGeometry.h 文件详解

    这些是在CGGeometry.h里的 CGPoint.CGSize.CGRect.CGRectEdge实际上都是结构体 struct CGPoint { CGFloat x; CGFloat y; } ...

  5. iOS开发 - OC - PCH文件使用

    一. PCH文件的作用 Xcode中,PCH文件在程序编译的时候会自动包含进去.也就是说PCH中的内容是全局的,可以使用在程序的任何地方,通过这个特性,我们可以概括到PCH的作用有以下几个方面: (1 ...

  6. IOS开发UI基础之Plis文件-字典转模型

    什么是plist文件? 在开发中直接将数据写在代码里面 不是一种合理的做法 如果数据经常改变 就需要经常翻开对应的代码进行修改 造成代码扩展性低 因此,可以考虑将经常变的数据放在⽂文件中进⾏行存储,程 ...

  7. iOS开发之网络编程--获取文件的MIMEType

    前言:有时候我们需要获取文件的MIMEType的信息,下面就介绍关于获取MIMEType的方法. 1.直接百度搜索关键字"MIMEType",你会找到,然后查吧: 2.用代码获取文 ...

  8. iOS开发- Xcode 7添加pch文件

    1.打开你的Xcode工程. 在Supporting Files目录下,选择 File > New > File > iOS > Other > PCH File 然后点 ...

  9. iOS开发-AFNetworking参数和多文件同时上传【多文件上传】

    1. 前言 在项目开发中,我们经常需要上传文件,例如:上传图片,上传各种文件,而有时也需要将参数和多个文件一起上传,不知道大家的项目中遇到了没有,我在最近的项目中,就需要这样的一个功能:同时上传参数. ...

随机推荐

  1. HTTP get、post请求

    Post请求: string postData = "user=123&pass=456"; // 要发放的数据 byte[] byteArray = Encoding.U ...

  2. C# string的一些函数

    创建string: string (char[])      使用指定的字符串数组构建一个新的string对象 Copy(string) 使用指定的string构建一个新的string对象 比较函数: ...

  3. Android studio快捷键Windows版本

    为了方便大家记住这些小技巧和快捷键,我把它写成了一个插件,欢迎大家下载使用:http://chunsheng.me/EasyShortcut/ 快捷键 描述 通用------------------- ...

  4. 【干货】.NET开发通用组件发布(二) 邮件发送组件

    组件介绍和合作开发 http://www.cnblogs.com/MrHuo/p/MrHuoControls.html 邮件发送组件 邮件发送组件采用常用的SMTP发送方式,需要添加以下格式的配置文件 ...

  5. CSS选择器4是下一代CSS选择器规范

    那么,这一版本的新东西有哪些呢? 选择器配置文件 CSS选择器分为两类:快速选择器和完整选择器.快速选择器适用于动态CSS引擎.完整选择器适用于速度不占关键因素的情况,例如document.query ...

  6. windows安装composer方法和使用方法

    最近在学习yii2的框架的相关知识,对于yii2的许多新特性,最好还是去查看官网文档最好,如果有中文翻译的网站就更好了. 学习yii2的第一个门槛就是得安装composer这个依赖管理工具(但目前我认 ...

  7. 异常处理:你不可能总是对的 - 零基础入门学习Python032

    异常处理:你不可能总是对的 让编程改变世界 Change the world by program 因为我们是人,不是神,所以我们经常会犯错.当然程序员也不例外,就算是经验丰富的码农,也不能保证写出来 ...

  8. linux配置备忘

    ubuntu英文系统环境下,emacs输入中文设置:(http://www.cnblogs.com/pylemon/archive/2012/01/05/2312682.html) ~/.profil ...

  9. 安装 adobe flash player

    安装方法:     1. 下载Adobe Flash Player:        http://fpdownload.macromedia.com/get/flashplayer/pdc/11.2. ...

  10. No enclosing instance of type test8 is accessible. Must qualify the allocation with an enclosing instance of type test8 (e.g. x.new A() where x is an

    在编译一个例子时,结果编译时出现: No enclosing instance of type test8 is accessible. Must qualify the allocation wit ...