CGGeometry基础
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
一.基礎(chǔ)
CGGeometry參考定義幾何結(jié)構(gòu)和功能,操作簡單。
數(shù)據(jù)結(jié)構(gòu)中的一個點CGPoint代表在一個二維坐標系統(tǒng)。
數(shù)據(jù)結(jié)構(gòu)的位置和尺寸CGRect代表的一個長方形。
數(shù)據(jù)結(jié)構(gòu)的尺寸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的值轉(zhuǎn)變成整數(shù),得到一個最小的矩形,
CGRect CGRectIntersection:(CGRect A,CGRect B)
獲取兩個矩形相交處所的矩形,沒有相交返回NULL,用CGRectIsNull來檢測
CGRectOffset
CGRectStandardize
CGRectUnion
1. CGRect CGRectStandardize(CGRect rect)
?矩形的寬或者高小于0時才有改變。 把矩形的負數(shù)的寬高轉(zhuǎn)化為正數(shù)。
2.CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy)
?矩形rect進行內(nèi)嵌后得到的矩形 ?
?返回一個CGRect,x為原本的x-dx y為原本的y-dy? width為原本的width-2dx? height為原本的height-2dy
創(chuàng)建一個內(nèi)嵌的矩形,中心和rect參數(shù)的中心一樣,dx,dy對應(yīng)內(nèi)嵌的寬度和高度
比如:CGRect rect= CGRectInset(CGRectMake(0, 0, 100, 100), 10, 10);
會創(chuàng)建出的rect為(10,10,80,80),dx,dy也可以為負值,則是創(chuàng)建出來的矩形會大于原矩形范圍。
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進行分割?
/*
?這個函數(shù)用來分割矩形,參數(shù)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)
?把矩形的寬高改為整數(shù)。根據(jù)一個矩形,返回四個參數(shù)都是整數(shù)的矩形
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轉(zhuǎn)換為不可變字典
?bool CGSizeMakeWithDictionaryRepresentation(
?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? CFDictionaryRef __nullable dict, CGSize * __nullable size)? //把字典轉(zhuǎn)換為CGSize,存在size里,成功返回true 其他false
參考:http://blog.csdn.net/teamlet/article/details/49309971
轉(zhuǎn)載于:https://my.oschina.net/u/2560887/blog/706986
總結(jié)
以上是生活随笔為你收集整理的CGGeometry基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: String与string的区别
- 下一篇: 分布式架构中一致性解决方案——Zooke