这些是在CGGeometry.h里的

CGPoint、CGSize、CGRect、CGRectEdge实际上都是结构体

struct CGPoint {

CGFloat x;

CGFloat y;

};

typedef struct CGPoint CGPoint;

struct CGSize {

CGFloat width;

CGFloat height;

};

typedef struct CGSize CGSize;

struct CGRect {

CGPoint origin;

CGSize size;

};

typedef struct CGRect CGRect;

enum CGRectEdge {

CGRectMinXEdge, CGRectMinYEdge, CGRectMaxXEdge, CGRectMaxYEdge

};

typedef enum CGRectEdge CGRectEdge;

创建CGPoint、CGSize、CGRect

CGPoint CGPointMake(CGFloat x, CGFloat y);

CGSize  CGSizeMake(CGFloat width, CGFloat height);

CGRect  CGRectMake(CGFloat x, CGFloat y, CGFloat width,CGFloat height);

得到关于CGRect的数据

CGFloat CGRectGetMinX(CGRect rect);

CGFloat CGRectGetMidX(CGRect rect);

CGFloat CGRectGetMaxX(CGRect rect);

CGFloat CGRectGetMinY(CGRect rect);

CGFloat CGRectGetMidY(CGRect rect);

CGFloat CGRectGetMaxY(CGRect rect);

CGFloat CGRectGetWidth(CGRect rect);

CGFloat CGRectGetHeight(CGRect rect);

这里需要注意 frame 和 bound的区别 可以自行打印一下效果。

可以看一下这个实例

结果为下图(注意:bound 和  frame的不同之处):

bool CGPointEqualToPoint(CGPoint point1, CGPoint point2);//判断点是否相等

bool CGSizeEqualToSize(CGSize size1, CGSize size2);//判断大小是否相等

bool CGRectEqualToRect(CGRect rect1, CGRect rect2);//判断矩形框是否相等

CGRect CGRectStandardize(CGRect rect);  //返回一个CGRect

//CGRectMake(1, 1, 1, 1)返回(1, 1, 1, 1)

//CGRectMake(1, 1, 1, -1)返回(1, 0, 1, 1)

//CGRectMake(1, 1, -1, 1)返回(0, 1, 1, 1)

//CGRectMake(1, 1, -1, -1)返回(0, 0, 1, 1)

//只有当width或height小于零时才有改变

bool CGRectIsEmpty(CGRect rect);//判断是否为空 既width或height为0

bool CGRectIsNull(CGRect rect)  //判断是否为空 Null一般时执行某个方法后的返回值(例如两个不相交的CGRect执行相交方法(在下面)返回值为Null)

bool CGRectIsInfinite(CGRect rect) //判断是否为无穷大

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

//返回一个CGRect,x为原本的x-dx y为原本的y-dy 
width为原本的width-2dx  height为原本的height-2dy

CGRect CGRectIntegral(CGRect rect) //情况与CGRectStandardize类似

CGRect CGRectUnion(CGRect r1, CGRect r2)//两个CGRect的合集

CGRect CGRectIntersection(CGRect r1, CGRect r2) //两个CGRect的交集

CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy); //CGRect向x或y方向便宜 
x>0向右偏 x<0向左 y>0向下偏 y<0向上

void CGRectDivide(CGRect rect, CGRect *slice, CGRect *remainder,CGFloat amount, CGRectEdge edge);

bool CGRectContainsPoint(CGRect rect, CGPoint point)  //判断point是否在rect内

bool CGRectContainsRect(CGRect rect1, CGRect rect2)  //判断rect1是否包含rect2

bool CGRectIntersectsRect(CGRect rect1, CGRect rect2) //判断rect1和rect2是否相交

CFDictionaryRefCGPointCreateDictionaryRepresentation(CGPoint point) //把点转换为不可变字典

bool CGPointMakeWithDictionaryRepresentation(CFDictionaryRef dict,CGPoint *point); //把字典转换为点,存在point里,成功返回true 其他false

CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size);   //把CGSize转换为不可变字典

bool CGSizeMakeWithDictionaryRepresentation(CFDictionaryRef dict,CGSize *size);  //把字典转换为CGSize,存在size里,成功返回true 其他false

CFDictionaryRef CGRectCreateDictionaryRepresentation(CGRect);   //把CGRect转换为不可变字典

bool CGRectMakeWithDictionaryRepresentation(CFDictionaryRef dict,CGRect *rect);  //把字典转换为CGSize,存在rect里,成功返回true 其他false

这些是在UIGeometry.h里的,设计point size rect 和NSString之间的相互转换

NSString *NSStringFromCGPoint(CGPoint point);  //把一个点转换字符串,下面类似

NSString *NSStringFromCGSize(CGSize size);   

NSString *NSStringFromCGRect(CGRect rect);


CGPoint CGPointFromString(NSString *string);   //把字符串转换为点 字符串为@"{2,3}"的形式

CGSize CGSizeFromString(NSString *string);     //把字符串转换为CGSize 字符串为@"{3,4}"的形式

CGRect CGRectFromString(NSString *string);      //把字符串转换为CGRect 字符串为@"{{3,7},{3,4}}"的形式

 

CGGeometry.h 文件详解的更多相关文章

  1. UIKit继承结构和UIView.h文件详解

    @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem> ...

  2. jni.h头文件详解二

    作者:左少华 博客:http://blog.csdn.net/shaohuazuo/article/details/42932813 转载请注明出处:http://blog.csdn.net/shao ...

  3. 【转】 jni.h头文件详解(二)

    原文网址:http://blog.csdn.net/shaohuazuo/article/details/42932813 作者:左少华 博客:http://blog.csdn.net/shaohua ...

  4. PE文件详解(六)

    这篇文章转载自小甲鱼的PE文件详解系列原文传送门 之前简单提了一下节表和数据目录表,那么他们有什么区别? 其实这些东西都是人为规定的,一个数据在文件中或者在内存中的位置基本是固定的,通过数据目录表进行 ...

  5. /etc/inittab文件详解

    /etc/inittab由/sbin/init程序解析调用,用于系统初始化,/sbin/init可参考源码busybox中init.c的实现方式. 原址如下: http://leejia.blog.5 ...

  6. 附005.Docker Compose文件详解

    一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...

  7. Linux下inittab文件详解

    /etc/inittab文件详解 Linux系统的启动过程为:加电自检-->根据BIOS中的设置从指定的设备启动-->找到设备MBR中的bootloader引导启动系统-->启动ke ...

  8. 【转】linux中inittab文件详解

    原文网址:http://www.2cto.com/os/201108/98426.html linux中inittab文件详解 init的进程号是1(ps -aux | less),从这一点就能看出, ...

  9. Linux-apache httd.conf文件详解

    Linux-apache httd.conf文件详解 # This is the main Apache server configuration file. It contains the # co ...

随机推荐

  1. Web APi之EntityFramework【CRUD】(三)

    前言 之前我们系统学习了EntityFramework,个人觉得有些东西不能学了就算完了,必须要学以致用,在Web API上也少不了增(C).删(D).改(U).查(R).鉴于此,我们通过EF来实现W ...

  2. MongoDB学习系列(3)--解决MongoDB Unexpected Shutdown问题

    晚上准备继续学习PHP+MongoDB,点击Run_MongoDB_Service.bat文件,这个文件是我写的bat文件,就是快速启动MongoDB.但是命令行一闪而过,我很奇怪.昨天晚上写代码还是 ...

  3. 2014年百度之星程序设计大赛 - 初赛(第二轮)Chess

    题目描述:小度和小良最近又迷上了下棋.棋盘一共有N行M列,我们可以把左上角的格子定为(1,1),右下角的格子定为(N,M).在他们的规则中,“王”在棋盘上的走法遵循十字路线.也就是说,如果“王”当前在 ...

  4. MySQL索引下推技术

    索引下推整个思路如下: To see how this optimization works, consider first how an index scan proceeds when Index ...

  5. Android百度地图 关于visibility="gone"的奇葩问题

    最近在项目中遇到一个奇葩问题,花了很长时间,在这里记录下. 问题描述:我的主界面是ViewPager+Fragment,并且设置缓存了我的4个ViewPager页面.左侧是一个侧滑菜单,点击相应按钮打 ...

  6. SSE指令集优化学习:双线性插值

    对SSE的学习总算迈出了第一步,用2天时间对双线性插值的代码进行了优化,现将实现的过程梳理以下,算是对这段学习的一个总结. 1. 什么是SSE 说到SSE,首先要弄清楚的一个概念是SIMD(单指令多数 ...

  7. git切换到远程分支

    远程仓库 git clone 下来,当你执行 git branch,你只会看到 * master 并不会看到其他分支,即便远程仓库上有其他分支,使用 git branch -va 可以查看本地+远程分 ...

  8. Windows下80端口被pid为4的System进程占用解决方法

    前言 之前是Windows 7系统,前段时间装了Windows 10,php环境还没来得及搭建.今天折腾了一下,是用nginx+php,端口是80(已经停止了iis服务),nginx就是起不来,十之八 ...

  9. asp.net留言板项目源代码下载

    HoverTree是一个asp.net开源项目,实现了留言板功能. 前台体验网址:http://hovertree.com/guestbook/ 后台请下载源代码安装. 默认用户名:keleyi 默认 ...

  10. Xenocode Postbuild 2010 for .NET 使用说明

    文章转载自网络 用法一: .导入要加密的dotNET程序或assembly文件(.dll/.exe) .选择第二个选项卡“Protect” .点击“Select Pattern” .选中所有“Obje ...