1. 程式人生 > >iOS中 CGGeometry 類方法總結

iOS中 CGGeometry 類方法總結

原文文件在此:

https://developer.apple.com/library/prerelease/ios/documentation/GraphicsImaging/Reference/CGGeometry/index.html

CGGeometry參考定義幾何結構和功能,操作簡單。

資料結構中的一個點CGPoint代表在一個二維座標系統。

資料結構的位置和尺寸CGRect代表的一個長方形。

資料結構的尺寸CGSize代表寬度和高度。


一、資料結構

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;


二、方法

1、建立CGPointCGSizeCGRect

CGPoint CGPointMake(CGFloat x, CGFloat y);

CGSize  CGSizeMake(CGFloat width, CGFloat height);

CGRect  CGRectMake(CGFloat x, CGFloat y, CGFloat width,CGFloat height);

2、得到關於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);


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)

//只有當widthheight小於零時才有改變

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為原本的xdx y為原本的ydy  width為原本的width2dx  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); //CGRectxy方向便宜  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

三、幾個系統定義的量

const CGPoint CGPointZero

零點,與CGPointMake(0, 0)等效

const CGSize CGSizeZero

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

const CGRect CGRectZero

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

const CGRect CGRectNull

空矩形,這個和零矩形並不相同,當我們返回兩個不相交矩形的交集時,會返回空矩形。

const CGRect 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(00100100), 1010);

會創建出的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是一個巨集,定義了分割的方式如下:

?
12345678910

相關推薦

iOS CGGeometry 方法總結

原文文件在此:https://developer.apple.com/library/prerelease/ios/documentation/GraphicsImaging/Reference/CGGeometry/index.htmlCGGeometry參考定義幾何結構和

IOS(CGGeometry)幾何方法總結

IOS開發幾何類方法總結 CGGeometry.h檔案是用C語言實現的一個封裝了許多常用幾何方法的檔案。 一、幾個常用結構體 struct CGPoint { CGFloat x; CGFloat y; }; 定義一個點,設定x座標和y座標 struct CGSize {   CGFl

String的equals方法總結(轉載)

轉載:https://blog.csdn.net/qq_25827845/article/details/53868815 1.String原始碼中equals大致寫法: 1 public boolean equals(Object anObject) { 2 if (this == anObj

String的equals方法總結

最近我發現了一個事情,那就是在面試筆試中,好多公司都喜歡在String字串上出問題,涉及到方方面面的知識,包括其中的一些常用方法。在此,我總結下關於String類中的equals方法,以備應對以後的筆試

iOS的關於方法建立的UIButton的新增的點選事件,點選button時crash的有趣的事

前要 [sendBtn addTarget:self action:@selector(sendAction:) forControlEvents:UIControlEventTouchUpInsid

String的compareTo方法總結

最近我發現了一個事情,那就是在面試筆試中,好多公司都喜歡在String字串上出問題,涉及到方方面面的知識,包括其中的一些常用方法。在此,我總結下關於String類中的compareTo方法,以備應對以後

關於js數組方法總結

filter foreach 默認 tin ffffff 關於 調用 index reducer 數組在筆試中經常會出現的面試題,javascript中的數組與其他語言中的數組有些不同,為了方便之後數組的方法學習,整理了關於數組的操作方法 數組創建 JavaScript中創

objc方法和實例方法有什麽本質區別和聯系

實例 屬於 通過 實例對象 對象方法 self 類方法 緩存 變量 類方法: 類方法是屬於類對象的 類方法只能通過類對象調用 類方法中的self是類對象 類方法可以調用其他的類方法 類方法中不能訪問成員變量 類方法中不能直接調用對象方法 類方法是存儲在元類對象的方法緩存

Java遍歷包所有方法註解

|| asm 服務器 ret nec next 代碼 自定義 tco 一.代碼實例 import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.l

JAVA循環刪除list元素的方法總結

tor 循環 toolbar i++ 使用 修改 log span .get  印象中循環刪除list中的元素使用for循環的方式是有問題的,但是可以使用增強的for循環,然後今天在使用時發現報錯了,然後去科普了一下,再然後發現這是一個誤區。下面就來講一講。。伸手黨可直接跳

python方法、靜態方法、對象方法

pre sin 不能 ron require 修飾 所有 method 進行 註:以下都是以公有為前提,私有方法只能在類內部調用,不需多講。 1、對象方法 這種方法都有一個默認參數:self 這代表實例的這個對象 def __init__(self):

JAVA循環刪除list元素的方法總結(跳格刪除問題解決)(轉)

今天 src log 觸發 導致 spi als exceptio spa  印象中循環刪除list中的元素使用for循環的方式是有問題的,但是可以使用增強的for循環,然後今天在使用時發現報錯了,然後去科普了一下,再然後發現這是一個誤區。下面就來講一講。。伸手黨可直接跳至

Objective-C方法的getter和setter可以用點運算符嗎?

clang col 靜態變量 變量 uri family lan getc sta Objective-C中,對象實例property的getter和setter可以使用點運算符來操作,那麽類方法的getter和setter可以使用點運算嗎? 答案是肯定的。 看如下代碼

Python方法和靜態方法

作者:黎智煊 ,叩丁狼高階講師。本文為原創文章,轉載請註明出處。     類方法 是類物件所擁有的方法,需要用修飾器@classmethod來標識其為類方法,對於類方法,第一個引數必須是類物件,一般以cls作為第一個引數(當然可以用其他名稱的變數作

PHP的魔術方法總結

__construct, __destruct , __call,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __clone and __autoload魔術方法。 1、__get、__set這兩個方法是為在

模板——string方法總結

string類 string類是C++標準庫的一個重要的部分,也是字串的一種資料型別,相對於char*字串它更方便強大,我們不必擔心記憶體是否足夠、字串長度等等,而且作為一個泛型類出現,他整合的操作函式足以完成我們大多數情況下的需要。我們可以用 = 進行賦值操作,== 進行比

js陣列的方法總結

js中陣列的方法很多,經常都翻書看,無奈老是記不住,一到用的時候就忘了,大概還是因為用的少,也可能是因為方法確實太多,據不完全統計有23種。。。所以在這裡總結一下,當是記個筆記。 1、join() join(separator): 將陣列的元素組起一個字串,以separator為分隔符,省略

C# Datatime用法總結

C# 中Datatime類用法總結  收集了一些記錄下來,這些有的是從網上找的,有些是自己使用到的: DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25 dt.ToFileTime().ToString();

深度學習的優化方法總結

梯度下降沿著整個訓練集的梯度方向下降。可以使用隨機梯度下降很大程度地加速,沿著隨機挑選的小批量資料的梯度下降。 批量演算法和小批量演算法 使用小批量的原因 n個樣本均值的標準差是σn√σn,其中σσ是樣本值真實的標準差。分母n−−√n表明使用更多的樣本來估計梯度的方

javaset測試總結

public class SetStu {  /*Set:所有set容器的父介面   *set的特點:元素不能重複(equals和hashCode一起判斷)   *HashSet:是依據HashMap來實現的   *1.元素是無序的(元素排放的順序和我們新增元素的先後順序無關)   *2.不能儲存重複元素,當