iOS(CGGeometry)几何类方法总结

简介: iOS(CGGeometry)几何类方法总结

iOS开发几何类方法总结

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;

};

定义一个矩形

二、几个系统定义的量

 

constCGPoint CGPointZero

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

 

 

constCGSize CGSizeZero

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

 

 

constCGRect CGRectZero

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

 

constCGRect CGRectNull

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

 

 

constCGRect 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是一个宏,定义了分割的方式如下:

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);

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安全加固方法及实现
​iOS安全加固方法及实现
304 0
​iOS安全加固方法及实现
|
移动开发 前端开发 数据安全/隐私保护
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
1155 0
|
存储 监控 iOS开发
iOS应用崩溃了,如何通过崩溃手机连接电脑查找日志方法
在iOS应用开发过程中,调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时,我们可以连接电脑并使用Xcode Console等工具来查看日志。然而,这种方式可能不够方便,并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了极大的便利,本文将详细介绍其功能和使用方法。 克魔助手会提供两种日志,一种是实时的,一种的是崩溃的。(由于崩溃日志的环境很麻烦,目前只展示实时日志操作步骤)
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
757 0
|
运维 iOS开发 Windows
windows电脑备案ios APP获取公钥和证书指纹Sha-1值的方法
在阿里云进行APP备案、在备案IOS端的环节的时候,发现需要我们将p12证书安装在电脑上,再用xcode或或钥匙串访问来获取这个证书的公钥和sha-1值。 但是大部分开发uniapp应用的同学们,或者进行发布的运维人员的电脑都是windows,无法按照阿里云的教程来获取ios的公钥和sha-1。备案就被卡主了。 这里介绍下另一个方法,就是使用香蕉云编来在线上传证书获取。如下图所示,打开香蕉云编后,找到下图这个功能
1585 0
|
语音技术 开发工具 图形学
Unity与IOS⭐一、百度语音IOS版Demo调试方法
Unity与IOS⭐一、百度语音IOS版Demo调试方法
|
Android开发 iOS开发 开发者
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
App备案-iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹的获取方法
2019 0
|
iOS开发 开发者 Windows
uniapp云打包ios应用证书的获取方法,生成指南
打包用到的一共两个文件,一个是p12格式的私钥证书,一个是证书profile文件。其中生成p12证书的时候,按照官网的教程,是需要MAC电脑来协助做的,主要是生成一些csr文件和导出p12证书等。其实这些步骤也可以借助一些其他的工具来实现,不一定使用mac电脑,用windows电脑也可以创建。
1797 0
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
651 2
|
iOS开发
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
3759 0
App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法