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

将字典转化为矩形

目录
相关文章
|
7月前
|
移动开发 前端开发 数据安全/隐私保护
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
iOS发布证书.p12文件无密码解决办法及导出带密码的新.p12文件方法
221 0
|
7月前
|
安全 编译器 开发工具
​iOS安全加固方法及实现
​iOS安全加固方法及实现
78 0
​iOS安全加固方法及实现
|
7月前
|
存储 监控 iOS开发
iOS应用崩溃了,如何通过崩溃手机连接电脑查找日志方法
在iOS应用开发过程中,调试日志和奔溃日志是开发者必不可少的工具。当iOS手机崩溃时,我们可以连接电脑并使用Xcode Console等工具来查看日志。然而,这种方式可能不够方便,并且处理奔溃日志也相当繁琐。克魔助手的出现为开发者带来了极大的便利,本文将详细介绍其功能和使用方法。 克魔助手会提供两种日志,一种是实时的,一种的是崩溃的。(由于崩溃日志的环境很麻烦,目前只展示实时日志操作步骤)
|
iOS开发 开发者
📝 App备案与iOS云管理式证书 ,公钥及证书SHA-1指纹的获取方法
在iOS应用程序开发过程中,进行App备案并获取公钥及证书SHA-1指纹是至关重要的步骤。本文将介绍如何通过appuploader工具获取iOS云管理式证书 Distribution Managed 公钥及证书SHA-1指纹,帮助开发者更好地理解和应用该过程。
|
7月前
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
114 0
|
7月前
|
小程序 前端开发 Android开发
解决小程序中textarea ios端样式不兼容的两种方法
解决小程序中textarea ios端样式不兼容的两种方法
229 0
|
4月前
|
语音技术 开发工具 图形学
Unity与IOS⭐一、百度语音IOS版Demo调试方法
Unity与IOS⭐一、百度语音IOS版Demo调试方法
|
1月前
|
安全 Swift iOS开发
Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法
本文深入探讨了 Swift 与 UIKit 在 iOS 应用界面开发中的关键技术和实践方法。Swift 以其简洁、高效和类型安全的特点,结合 UIKit 丰富的组件和功能,为开发者提供了强大的工具。文章从 Swift 的语法优势、类型安全、编程模型以及与 UIKit 的集成,到 UIKit 的主要组件和功能,再到构建界面的实践技巧和实际案例分析,全面介绍了如何利用这些技术创建高质量的用户界面。
33 2
|
3月前
|
Swift iOS开发
6-7|IOS如何定义一个类
6-7|IOS如何定义一个类
|
4月前
|
存储 iOS开发
iOS 16 系统键盘修复问题之确定UIKeyboardTaskQueue类对_lock的加锁和解锁操作如何解决
iOS 16 系统键盘修复问题之确定UIKeyboardTaskQueue类对_lock的加锁和解锁操作如何解决