2

私は画面に描画する方法を持っていますが、それが機能しないという小さな問題を除いて、私のアプリケーションにとって多くの利点があります... まったく。

UIImageView ウィジェットを備えた iOS プログラムがあり、プログラムで描画しようとしていますが、プログラムを実行すると黒く見えます。これは、ヘッダー ファイルのアウトレット宣言です。

@interface TestViewController : UIViewController

@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

...そしてこれが私の実装です:

@implementation TestViewController

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

    UIGraphicsBeginImageContextWithOptions(CGSizeMake(400, 400), YES, 0.0);

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGFloat colour[] = { 1, 0, 0, 1 };
    CGContextSetFillColor(context, colour);
    CGContextFillRect(context, CGRectMake(0, 0, 400, 400));

    self.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
    [self.imageView setNeedsDisplay];

    UIGraphicsEndImageContext();
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

TestViewControllerビュー コントローラのデリゲートであり、ウィジェットimageViewのアウトレットです。UIImageView400 x 400 の赤いボックスを画像に描画し、その画像をウィジェットに割り当てようとしています。setNeedsDisplay私は十分な措置を求めさえします。

私は何を間違っていますか?ありがとうございました!

4

1 に答える 1

3

これらの行が問題です:

CGFloat colour[] = { 1, 0, 0, 1 };
CGContextSetFillColor(context, colour);

それらを削除します。代わりに、塗りつぶしの色を次のように設定します。

 CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);

問題の理由は、色空間の作成に失敗したことです。に電話する必要がありましたがCGContextSetFillColorSpace、そうしませんでした。ただし、これは を使用する場合にのみ必要ですCGContextSetFillColor。ただし、非推奨なので使用しないでください。CGContextSetFillColorWithColorドキュメントが推奨するように、を使用してください。色空間の問題を処理します。

于 2013-05-14T17:08:14.210 に答える