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);
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);
}
明確にするために:
同じ塗りつぶしと境界線の色を持つ長方形を描画する必要がある場合は、次のものを置き換えることができます。
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
と:
[[UIColor redColor] set];
override func draw(_ rect: CGRect) {
let r = CGRect(x: 5, y: 5, width: 10, height: 10)
UIColor.yellow.set()
UIRectFill(r)
}
それでおしまい。
ViewDidLoadで直接レンダリングすることはできません。 drawRectメソッドでこれを実行する必要があるのはビュー自体です。
長方形を「描画」する最も簡単な方法は、背景色と境界線を使用してUIViewをビューに配置することです。 (ビューのCALayerのメソッドを使用して境界線を設定できます。つまり、myView.layer.borderColor = [[UIColor redColor] CGColor];
)