0

これはばかげた質問のように思えるか、単に疲れているだけかもしれませんが、必要な結果が得られていません。線が見えないので、結果が得られているかどうかわかりません。誰かが私が間違っていることを教えてもらえますか?

- (void)drawCenterPlus
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 20);
    [[UIColor redColor] setStroke];

    CGPoint hStart;
    CGPoint hEnd;
    CGPoint vStart;
    CGPoint vEnd;

    hStart.x = self.center.x - 20.0;
    hStart.y = self.center.y;
    hEnd.x = self.center.x + 20.0;
    hEnd.y = self.center.y;
    vStart.x = self.center.x;
    vStart.y = self.center.y - 20.0;
    vEnd.x = self.center.x;
    vEnd.y = self.center.y + 20.0;

    //line 1
    CGContextBeginPath(context);
    CGContextMoveToPoint(context, hStart.x, hStart.y);
    CGContextAddLineToPoint(context, hEnd.x, hEnd.y);
    CGContextStrokePath(context);

    //line 2
    CGContextBeginPath(context);
    CGContextMoveToPoint(context, vStart.x, vStart.y);
    CGContextAddLineToPoint(context, vEnd.x, vEnd.y);
    CGContextStrokePath(context);
}

前もって感謝します。

-------------------------------------------------- -----追加情報------------------------------------------

実際には、これは viewDidLoad から呼び出されます。ビューの中央に「+」を描画しようとしています。「+」が見えるように、ビューを別の色にしました。「+」は黒で描くことができます。見たいだけです。はい、画面にテキスト「+」を配置できますが、最終的には長方形の内側に描画する必要があります。

空白のビューでもう一度試して、図面がサブビューの後ろに隠れていないかどうかを確認します。見てみましょう。またよろしくお願いいたします。

-------------------------------------------------- ----- 最新の方法 ------------------------------------------- ----

わかった。画面の中央に(できれば)赤い「+」しかない1つのビューを持つ新しいプロジェクト。しかし、何も表示されません。私は何を間違っていますか?

@implementation TESTViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 20);
    [[UIColor redColor] setStroke];

    CGPoint hStart;
    CGPoint hEnd;
    CGPoint vStart;
    CGPoint vEnd;

    hStart.x = self.view.center.x - 20.0;
    hStart.y = self.view.center.y;
    hEnd.x = self.view.center.x + 20.0;
    hEnd.y = self.view.center.y;
    vStart.x = self.view.center.x;
    vStart.y = self.view.center.y - 20.0;
    vEnd.x = self.view.center.x;
    vEnd.y = self.view.center.y + 20.0;

    //line 1
    CGContextBeginPath(context);
    CGContextMoveToPoint(context, hStart.x, hStart.y);
    CGContextAddLineToPoint(context, hEnd.x, hEnd.y);
    CGContextStrokePath(context);

    //line 2
    CGContextBeginPath(context);
    CGContextMoveToPoint(context, vStart.x, vStart.y);
    CGContextAddLineToPoint(context, vEnd.x, vEnd.y);
    CGContextStrokePath(context);
}
4

2 に答える 2

1

の値を確認してくださいcontext- である可能性がありますnil

このコードをUIViewサブクラスのdrawRectメソッド内に配置すると、有効なコンテキストが得られるため、機能するはずです。

または、独自の UIImage コンテキストを作成し、その中に形状を描画して、画像をサブビューとして追加することもできます。例えば

- (void)drawCenterPlus {

    UIGraphicsBeginImageContext(self.view.frame.size);

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 20);
    [[UIColor redColor] setStroke];

    CGPoint hStart;
    CGPoint hEnd;
    CGPoint vStart;
    CGPoint vEnd;

    hStart.x = self.view.center.x - 20.0;
    hStart.y = self.view.center.y;
    hEnd.x = self.view.center.x + 20.0;
    hEnd.y = self.view.center.y;
    vStart.x = self.view.center.x;
    vStart.y = self.view.center.y - 20.0;
    vEnd.x = self.view.center.x;
    vEnd.y = self.view.center.y + 20.0;

    //line 1
    CGContextBeginPath(context);
    CGContextMoveToPoint(context, hStart.x, hStart.y);
    CGContextAddLineToPoint(context, hEnd.x, hEnd.y);
    CGContextStrokePath(context);

    //line 2
    CGContextBeginPath(context);
    CGContextMoveToPoint(context, vStart.x, vStart.y);
    CGContextAddLineToPoint(context, vEnd.x, vEnd.y);
    CGContextStrokePath(context);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    [self.view addSubview:imageView];

}
于 2013-10-29T13:33:06.920 に答える