web-dev-qa-db-ja.com

iPhoneで線を引くにはどうすればよいですか?

私はiPhoneプログラミングの初心者であり、QuartzとUIKitを使用した学習を目的として、電話スクリーンに線を引きたいと思っています。

描画を開始するにはどうすればよいですか?

43
anish

最初のステップは、描画するスペースを作成するために、UIViewのサブクラスを定義することです。

新しいアプリケーションから始める場合、最も簡単な方法は「ウィンドウベースのアプリケーション」テンプレートから始めることです。

次に、[新規ファイル]に移動し、[サブクラス]を[UIView]に設定して[Objective-Cクラス]を作成し、MyView.mなどの名前を付けます。

「リソース」グループを開き、「MainWindow.xib」をダブルクリックして、Interface Builderで開きます。ここから、「ウィンドウ」という名前のウィンドウが表示されます。 Cmd + Shift + Lを押してライブラリを表示し、「表示」コンポーネントをウィンドウにドラッグして、すべてを表示できるように配置します。新しいビューを選択した状態で、Cmd + 4を押してIDインスペクターを表示し、[クラスID]の下でドロップダウンをクリックして、MyViewを選択します。

次に、MyView.mでdrawRect:メソッドを実装する必要があります。これは、線を描くコードの例です。

- (void)drawRect:(CGRect)rect {
    CGContextRef c = UIGraphicsGetCurrentContext();

    CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f};
    CGContextSetStrokeColor(c, red);
    CGContextBeginPath(c);
    CGContextMoveToPoint(c, 5.0f, 5.0f);
    CGContextAddLineToPoint(c, 50.0f, 50.0f);
    CGContextStrokePath(c);
}

すべてを保存して「ビルドして実行」をクリックすると、iPhoneに短い赤い線が表示されます。

Core Graphicsの詳細については、Apple Documentation。最終的に使用するコアグラフィックス関数は、「CGContext」という用語で始まります。

147
Tobias Cohen

UIBezierPathを使用して線を引くこともできます。次の例では、垂直方向の中心に水平線が描画されます。

- (void)drawRect:(CGRect)rect {
    CGFloat rectHeight = CGRectGetHeight(rect);
    CGFloat rectWidth = CGRectGetWidth(rect);

    UIBezierPath *line = [UIBezierPath bezierPath];
    [line moveToPoint:CGPointMake(0, rectHeight / 2)];
    [line addLineToPoint:CGPointMake(rectWidth, rectHeight / 2)];

    [[UIColor lightGrayColor] setStroke];
    [line stroke];
}
4
Jonathan Lin