CGGeometry基础
2019独角兽企业重金招聘Python工程师标准>>>
一.基础
CGGeometry参考定义几何结构和功能,操作简单。
数据结构中的一个点CGPoint代表在一个二维坐标系统。
数据结构的位置和尺寸CGRect代表的一个长方形。
数据结构的尺寸CGSize代表宽度和高度。
点 CGPoint, 尺寸CGSize,矢量CGVector,矩形CGRect
CGVector CGVectorMake(CGFloat dx, CGFloat dy);//表示在x,y俩个维度的变化量
二. 修改矩形
CGRectDivide
CGRect CGRectInset(CGRect rect,CGFloat dx,CGFloat dy)
返回一个比原矩形大或小的矩形,但是中心点是相同的
CGRect CGRectIntegral(CGRect A)
将矩形A的值转变成整数,得到一个最小的矩形,
CGRect CGRectIntersection:(CGRect A,CGRect B)
获取两个矩形相交处所的矩形,没有相交返回NULL,用CGRectIsNull来检测
CGRectOffset
CGRectStandardize
CGRectUnion
1. CGRect CGRectStandardize(CGRect rect)
矩形的宽或者高小于0时才有改变。 把矩形的负数的宽高转化为正数。
2.CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy)
矩形rect进行内嵌后得到的矩形
返回一个CGRect,x为原本的x-dx y为原本的y-dy width为原本的width-2dx height为原本的height-2dy
创建一个内嵌的矩形,中心和rect参数的中心一样,dx,dy对应内嵌的宽度和高度
比如:CGRect rect= CGRectInset(CGRectMake(0, 0, 100, 100), 10, 10);
会创建出的rect为(10,10,80,80),dx,dy也可以为负值,则是创建出来的矩形会大于原矩形范围。
3.CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy)
矩形rect进行偏移后得到的矩形
CGRect向x或y方向便宜 x>0向右偏 x<0向左 y>0向下偏 y<0向上 返回一个矩形,偏移量相对于rect,只改变矩形原点origin。
4.void CGRectDivide(CGRect rect, CGRect * slice,
CGRect * remainder, CGFloat amount, CGRectEdge edge)
// 把矩形rect进行分割
/*
这个函数用来分割矩形,参数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);
*/
5. CGRectIntegral(CGRect rect)
把矩形的宽高改为整数。根据一个矩形,返回四个参数都是整数的矩形
6.CGRect CGRectUnion(CGRect r1, CGRect r2) 并集
7.CGRect CGRectIntersection(CGRect r1, CGRect r2) 交集
三.其他
bool CGRectIsEmpty(CGRect rect)// 矩形的宽或者高为0 零矩形
bool CGRectIsNull(CGRect rect)// 空矩形,eg:俩个矩形相交可能会得到空矩形
bool CGRectIsInfinite(CGRect rect)// 矩形是否无穷大
CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size)// //把CGSize转换为不可变字典
bool CGSizeMakeWithDictionaryRepresentation(
CFDictionaryRef __nullable dict, CGSize * __nullable size) //把字典转换为CGSize,存在size里,成功返回true 其他false
参考:http://blog.csdn.net/teamlet/article/details/49309971
转载于:https://my.oschina.net/u/2560887/blog/706986
CGGeometry基础相关推荐
- 有关UIView、subview的几个基础知识点-IOS开发 (实例)
环境是xcode4.3 首先要弄懂几个基本的概念. 一)三个结构体:CGPoint.CGSize.CGRect 1. CGPoint /* Points. */ struct CGPoint { C ...
- java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】
类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...
- 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作
上一节,我们了解了如何定位元素,其实也有涉及对于元素的操作,这一节我们就详细的介绍一下对于元素的操作和对于浏览器的一些操作 一.对于元素的基础操作: clear():清除输入框内的文本 send_ke ...
- java mybatis基础
java mybatis基础 1.1 什么是mybatis? mybatis是一个优秀的持久层框架. 避免几乎所有的JDBC代码和手动设置参数以及获取结果集的过程. 可以使用简单的xml或者注解来配置 ...
- 【J2SE】学习基础
Java基础 语法基础 OO Exception Array 基础类 I/O Stream Collection/Generic Thread TCP/UDP GUI Meta Data Regula ...
- 【Linux系统】基础总结
我不太清楚运维部门具体是做什么的,就接触过一点点运维部门! 也就是是知道他们负责管理服务器,管理网络,管理项目部署 偶尔自己需要部署,不得不接触一些linux命令.简单总结一些基础 linux系统发展 ...
- 【Java 2 Platform Enterprise Edition】基础
问题1:为什么java是无关平台? 你之前用C或者C++写的源代码,编译好后,换一种操作系统,可能就执行不了了.因为新的操作系统不识别,你需要修改你的源码,并在新的操作系统上重新编译才能运行,比如Wi ...
- SpringCloud Alibaba微服务实战(一) - 基础环境搭建
说在前面 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来 ...
- Redis概述和基础
Redis 1.NoSQL NoSQL = Not Only SQL(不仅仅是SQL) 泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的 ...
最新文章
- 感悟Windows7
- selenium 常用操作
- JAVA 多用户商城系统b2b2c-kafka处理超大消息
- 《Effective Java2》笔录
- Android初级教程获取手机系统联系人信息
- jQuery.inArray()方法
- excel去重_数据处理之EXCEL的高效技巧分享
- 用Jenkins编译asp.net
- 正则表达式收集(持久更新)
- stderr和stdout详细解说
- JVM篇2:[-加载器ClassLoader-]
- Linux下不借助工具实现远程linux服务器上传下载文件
- 众为兴SCARA四轴机械臂编程(二)——基于硬接线替代Modbus通讯
- 关于Java工具eclipse的基本
- htm html mht 无图标,mht文件与html文件有何区别?
- Android Behavior
- 利用Mono.Cecil动态修改程序集来破解商业组件
- 金地集团三季报:归母净利润同比降超三成,仍存债务压力
- 储备物资管理局计算机,国考报名税务过审居首 储备物资管理局最抢手
- python 解析域名
热门文章
- 工厂模式-CaffeNet训练
- ***快速理解Docker - 容器级虚拟化解决方案
- system(“”start calc“”)
- 亲测能用的mysqli类,挺好用的
- 3月30日作业:采购管理、信息管理和配置管理
- [Nodejs]初探nodejs学习笔记- 如何使用nodejs搭建简单的UDP聊天功能
- FastJson简单应用
- 丢失api-ms-win-crt-runtime-l1-1-0.dll问题解决
- scipy实现的共轭梯度法以及相关原理图解
- ERROR: cannot start IntelliJ IDEA. No JDK found to run IDEA. Please validate either IDEA_JDK, JDK_HO