2011-11-19 12 views
15

私のviewContollerのビューに塗りつぶし矩形を描きたいと思います。 以下のコードをviewDidLoadに書きました。しかし、変化はありません。 どうしたのですか?長方形を描く方法は?

CGRect rectangle = CGRectMake(0, 100, 320, 100); 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0); 
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); 
CGContextFillRect(context, rectangle); 
+0

私は現代的な答え2018 – Fattie

答えて

41

viewControllerでは実行できません。 ビューを拡張し、 "drawRect:"の下にコードを追加する必要があります

これは、ビューの描画ロジックを変更します。

-(void) drawRect:(CGRect)rect{  
[super drawRect:rect]; 
    CGRect rectangle = CGRectMake(0, 100, 320, 100); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0); 
    CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); 
    CGContextFillRect(context, rectangle); 
} 
+2

+1を正解に入れましたが、私はdrawRectのCGRectパラメータを無視しませんでした.... – Till

+0

右、私はより良い解決策は、再描画が必要な領域が四角形の一部であることを最初に検証し、次にそれを行うことです。 –

+0

ビューを拡張するとはどういう意味ですか? – charly

2

viewDidLoadで直接レンダリングすることはできません。 drawRectメソッドでこれを実行しなければならないのはビューそのものです。

矩形を「描画」する最も簡単な方法は、背景色が&のUIViewをビューに配置することです。 (あなたは、ビューのCALayerののメソッドを経由して境界線を設定することができ、すなわちmyView.layer.borderColor = [[UIColor redColor] CGColor];。)

1

をただ明確にするため:

あなたが同じ塗りつぶしと境界線の色を持つ四角形を描画する必要がある場合は、あなたが交換することができます:

CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0); 
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); 

[[UIColor redColor] set]; 
0

現代2018ソリューション..

override func draw(_ rect: CGRect) { 

    let r = CGRect(x: 5, y: 5, width: 10, height: 10) 

    UIColor.yellow.set() 
    UIRectFill(r) 
} 

それだけです。

関連する問題