Custom Viewを作成(iOS)

SingleView でプロジェクトを作成 xlbを開き、既存のViewの上にラベルやボタンなどのコントロールと、CustomView用のUIViewを乗っける。

新規にUIViewを継承するクラスを作成し、さっき追加したCustomView用のObjectに関連づける。

作成したクラスの drawRect に描画のコードを追加。UIBezierPathを使って円弧を塗りつぶす。

ここで、1つひっかかってしまったのは、Pathに弧の部分だけを描いても思ったように塗りつぶせないこと。AndroidのCanvas.drawArcメソッドのuseCenterパラメータがfalseと同じ状態になり、弧の始点と終点を直線で結んだ内部だけが塗りつぶされる。円の中心も含めるには、Pathに明示的に円の中心までの直線を追加する必要がある。なお、塗りつぶし(fill)の場合は、Pathの始点と終点が自動的に直線で結ばれる(closeされる)が、線を描く(stroke)場合は、明示的に始点と終点を結ぶ線を追加するか、あるいはclosePathメソッドを呼び出さないと、開放されたPathのままで描かれる。

円弧を塗りつぶすコード例

    //draw filled arc for tic
    UIBezierPath *pathTic1 = [UIBezierPath bezierPathWithArcCenter:c radius:r startAngle:st1 endAngle:en1 clockwise:true];
    //Close the path.
    [pathTic1 addLineToPoint:c]; 

    // Set the render colors
    [[UIColor redColor] setFill];

    // Fill the path
    [pathTic1 fill];

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください