CGGeometry.h 文件详解

这些是在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}}"的形式

时间: 2024-10-02 14:38:51

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

jni.h头文件详解(二)

一:struct JNINativeInterface_{} 结构体的作用:它有点像我们char字符驱动的 file_ops结构体,它定义各种函数对在(jni.h头文件详解一)中定义的各种数据的操作函数集体. 二:它包含那些针对Java中类和对象的相关操作呢如下图. 三:下面我们讲详细介绍14个部分方法的用法和解析 3.1.版本信息操作函数. 一.GetVersion jint (JNICALL *GetVersion)(JNIEnv *env) --模块信息:该模块主要针对的JNI接口的版本信

jni.h头文件详解二

作者:左少华 博客:http://blog.csdn.net/shaohuazuo/article/details/42932813 转载请注明出处:http://blog.csdn.net/shaohuazuo 一:struct JNINativeInterface_{} 结构体的作用:它有点像我们char字符驱动的 file_ops结构体,它定义各种函数对在(jni.h头文件详解一)中定义的各种数据的操作函数集体. 二:它包含那些针对Java中类和对象的相关操作呢如下图. 三:下面我们讲详细

Linux-apache httd.conf文件详解

Linux-apache httd.conf文件详解 # This is the main Apache server configuration file. It contains the # configuration directives that give the server its instructions. # See <URL:http://httpd.apache.org/docs/2.2/> for detailed information. # In particular

【转】linux中inittab文件详解

原文网址:http://www.2cto.com/os/201108/98426.html linux中inittab文件详解 init的进程号是1(ps -aux | less),从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序. init程序需要读取配置文件/etc/inittab.inittab是一个不可执行的文本文件,它有若干行指令所组成. 理解Runlevel: runlevel用来表示在init进程结束之后的系统状态,在系统的硬

豹哥嵌入式讲堂:ARM Cortex-M开发之文件详解(8)- 镜像文件(.bin/.hex/.s19)

大家好,我是豹哥,猎豹的豹,犀利哥的哥.今天豹哥给大家讲的是嵌入式开发里的image文件(.bin, .hex, .s19). 今天这节课是豹哥<ARM Cortex-M开发之文件详解>主题系列的最后一节课(突然有点不舍,要告别的感觉,咳咳,让豹哥整理下情绪先).今天豹哥主要讲的是工程开发最终的output文件,即image文件.image文件也叫镜像文件,这个文件主要包含的是只有芯片能够解释执行的二进制机器码数据,这些数据其实在前面介绍的relocatable.list.executable

Linux学习— /etc/fstab文件详解

目录 /etc/fstab介绍 参数介绍 配置该文件的一些问题 一.介绍 在介绍/etc/fstab之前,需要先了解挂载和该文件的关系: 其实windows也一样需要挂载的,只不过在分区的时候windows被"挂载"到了C,D,E等盘. 任何硬件设备连接后,操作系统使用硬件,即需要挂载.windows只不过是自动"挂载"了,linux需要手动自己搞.在Linux系统下,例如每次挂载/dev/sr0(光盘设备文件)需要手动使用命令mount.当然,每次重启,开启时,硬

Linux下inittab文件详解

/etc/inittab文件详解 Linux系统的启动过程为:加电自检-->根据BIOS中的设置从指定的设备启动-->找到设备MBR中的bootloader引导启动系统-->启动kernel-->启动init进程 我们看到,Linux系统启动的最后是启动init进程,而init进程是怎么工作的呢?init进程就是根据/etc/inittab这个文件来在不同的运行级别启动相应的进程或执行相应的操作. /etc/inittab这个文件中定义的登记项都是以:隔开的四个段,即: id:ru

package-info.java文件详解

package-info.java文件详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.pacakge-info.java介绍 pacakge-info.java是一个Java文件,可以添加到任何的Java源码包中.pacakge-info.java的目标是提供一个包级的文档说明或者是包级的注释. pacakge-info.java文件中,唯一要求包含的内容是包的声明语句,比如: package com.ch.service; 二.包文档 在

史上最全的maven的pom.xml文件详解

史上最全的maven的pom.xml文件详解 http://www.cnblogs.com/hafiz/p/5360195.html <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h