///////////////////////////////////
手順1.
プロジェクトの作成。
○XCodeの新規プロジェクトからView-based Projectを選択する。
プロジェクト名は、SimpleCoreGraphicsとしておきます。
自動で生成されているファイル構成は
SimpleCoreGraphicsAppDelegate.m/h
SimpleCoreGraphicsViewController.m/h
SimpleCoreGraphics_Prefix.pch
main.m
である。
拡張子が.mのファイルは、すべて.mmに直しておく。(C++表現がコンパイルを通るようにするため)
///////////////////////////////
手順2.
ビューの作成
○ファイルSimpleCoreGraphicsView.mm/hの作成
ビューの名前は SimpleCoreGraphicsViewとしておきます。
○ファイルSimpleCoreGraphicsView.h
@interface SimpleCoreGraphicsView : UIView {
}
@end
SimpleCoreGraphicsViewを宣言。
UIViewを継承すること
○ファイルSimpleCoreGraphics.mm
#import "SimpleCoreGraphicsView.h"
@implementation SimpleCoreGraphicsView
-(id) initWithFrame:(CGRect) rect
{
if ((self = [super initWithFrame:rect])){
}
return self;
}
-(void) dealloc
{
[super dealloc];
}
@end
初期化関数、破棄関数を定義
○ファイルSimpleCoreGraphicsViewController.mm
#import "SimpleCoreGraphicsView.h"
- (void)loadView {
CGRect screenBounds = [[UIScreen mainScreen] applicationFrame];
self.view = [[SimpleCoreGraphicsView alloc] initWithFrame:screenBounds];
}
SimpleCoreGraphicsViewを生成し、ビューにセットする。
この状態でビルド・実行すると、ビューができるので一面真っ白になる。
///////////////////////////////////
手順3.カレントコンテキストに描画
○カレントコンテキストに直接、描きたい図形を描く。
ファイルCoreGraphicsView.mm
- (void)drawRect:(CGRect)rect
{
//コンテキスト取得
CGContextRef ctxScreen = UIGraphicsGetCurrentContext();
//クリア
CGContextClearRect(ctxScreen, CGRectMake(0, 0, 320, 480));
//直線描画
CGContextSetRGBStrokeColor(ctxScreen, 1.f, 0.f, 1.f, 1.f);
CGContextSetLineWidth(ctxScreen, 5.f);
CGContextSetLineCap(ctxScreen, kCGLineCapRound);
CGContextBeginPath(ctxScreen);
CGContextMoveToPoint(ctxScreen, 10, 10);
CGContextAddLineToPoint(ctxScreen, 50, 50);
CGContextStrokePath(ctxScreen);
}
メソッドdrawRectはUIViewで宣言されているので、オーバーライドする。
drawRectは、最初に自動で1回だけ呼ばれる。その後明示的に呼び出したい場合は、
[self setNeedsDisplay];
と記述する。このメソッドはUIViewで宣言されている。
カレントコンテキストは、UIGraphicsGetCurrentContext()で取得できる。
このコンテキストはview(つまりself)に紐づいており、viewが変化すれば、コンテキストや描画位置も応じて変化する。
完成!
画面に直線が引かれたら成功です。
PR