iOS繪圖

weixin_33797791發表於2017-12-20

1.UIKit(UIImage、NSString(繪製文字)、UIBezierPath(繪製形狀)、UIColor)

1.相對來說,現在用的比較多的還是UIKit,例如股票的APP,用的比較多的是UIBezierPath+CAShaperLayer,CAShapeLayer可以繪製多邊形,直線和曲線。CATextLayer可以繪製文字。CAGradientLayer用來繪製漸變。用CoreGraphics的也有

但是CoreGraphics偏底層,而且需要獲取當前上下文或者新建上下文CGContextRef(可以理解為畫布)

2.動畫的話是CAShaperLayer+CAAnimation就可以實現動態的動畫效果

3.使用

- (void)drawRect:(CGRect)rect // 1.重寫drawRect方法

{

UIBezierPath* aPath = [UIBezierPath bezierPathWithRect:CGRectMake(20, 20, 100, 50)]; // 2.建立圖形相應的UIBezierPath物件

// 3.設定一些修飾屬性

aPath.lineWidth = 8.0;

aPath.lineCapStyle = kCGLineCapRound;

aPath.lineJoinStyle = kCGLineCapRound;

UIColor *color = [UIColor colorWithRed:0 green:0 blue:0.7 alpha:1];

[color set];

[aPath stroke]; // 4.渲染,完成繪製

}

// 最後的閉合線是可以通過呼叫closePath方法來自動生成的,也可以呼叫-addLineToPoint:方法來新增

//  [path addLineToPoint:CGPointMake(100, 100)];

[path closePath];

1.1對UIBezierPath的詳解,相對來說是從官網的中文翻譯加說明 http://www.jianshu.com/p/6130b51a0b71?utm_source=tuicool&utm_medium=referral

2.Core Graphics (基於Quartz 2D API)

蘋果公司使用C語言編寫的一套繪圖引擎(一組能夠實現繪圖API),即可以在iOS中使用,也可以在Mac OS X上使用

2.1解說:

CGContextRef即圖形上下文。可以這麼理解,我們繪圖是需要一個載體或者說輸出目標,它用來顯示繪圖資訊,並且決定繪製的東西輸出到哪個地方。可以形象的比喻context就像一個"畫板",我們得把圖形繪製到這個畫板上。所以,繪圖必須要先有context。 取到的CGContext分兩種

2.1.1 第一種方法是利用cocoa為你生成的圖形上下文。當你子類化了一個UIView並實現了自己的drawRect:方法後,一旦drawRect:方法被呼叫,Cocoa就會為你建立一個圖形上下文,此時你對圖形上下文的所有繪圖操作都會顯示在UIView上。// 1.獲取上下文CGContextRef ctx = UIGraphicsGetCurrentContext();

2.1.2 第二種方法就是建立一個圖片型別的上下文。呼叫UIGraphicsBeginImageContextWithOptions函式就可獲得用來處理圖片的圖形上下文。利用該上下文,你就可以在其上進行繪圖,並生成圖片。呼叫UIGraphicsGetImageFromCurrentImageContext函式可從當前上下文中獲取一個UIImage物件。記住在你所有的繪圖操作後別忘了呼叫UIGraphicsEndImageContext函式關閉圖形上下文。

2.2.1參考 http://www.cnblogs.com/kenshincui/p/3959951.html#!comments

2.2.2參考 http://www.cocoachina.com/ios/20141104/10124.html

3.OpenGL ES和GLKit

4.UIImage繪圖的處理

http://www.jianshu.com/p/3baddf100b67

5.使用CoreGraphics導致記憶體暴增的解釋

http://blog.csdn.net/erice_e/article/details/69258093

相關文章