2

UIView を含む UIViewController があり、その上に直線の点線を描きたいと思います。これを行う最も簡単でパフォーマンスの高い方法は何ですか? どうすればいいですか?幅 150 のグレー色の直線の水平点線になります。私は周りを見回しましたが、CGContextSetLineDashを使用することが解決策であるようで、これまでのところ私が持っているものは次のとおりです:

-(void) drawRect:(CGRect) rect
{
  CGContextRef context = UIGraphicsGetCurrentContext();
  CGContextSetLineWidth(context, 100);
  CGFloat dashes[] = {1,1};
  CGContextSetLineDash(context, 2.0, dashes, 2);
  CGContextStrokePath(context);
}
4

2 に答える 2

3

これを試して:

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGContextSetStrokeColorWithColor(context, color.CGColor);


CGContextSetLineWidth(context, 2.0);

CGFloat lengths[] = {0, 8};
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineDash(context, 0.0f, lengths, 2);

CGContextMoveToPoint(context, 10,  10);
CGContextAddLineToPoint(context, 200, 10);

CGContextStrokePath(context);
CGColorSpaceRelease(colorspace);
于 2014-12-01T14:28:25.750 に答える
3

CGContextStrokePath現在のパスを描画しますが、コンテキストにパスを追加しないため、何も描画されません。

呼び出しの前に次の 2 行を追加するCGContextStrokePathと、何かが表示されるはずです。

CGContextMoveToPoint(context, 0, self.bounds.size.height * 0.5);
CGContextAddLineToPoint(context, self.bounds.size.width, self.bounds.size.height * 0.5);

ストロークの色をまだ設定していない場合は、次のようなもの (50% グレー) も追加する必要があります。

CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 1.0);

結果が本当に希望どおりかどうかはわかりません。{1, 1} のパターンを持つ 100 ポイントの点線は、点線よりもピンストライプ パターンの長方形のように見えます。ドットを円にしたい場合は、何らかのループで手動で描画する必要があります。

于 2012-08-02T19:30:13.083 に答える