如何在iOS中以编程方式绘制到显示器?

如何在iOS中以编程方式绘制到显示器?,ios,cocoa-touch,uiimageview,uikit,core-graphics,Ios,Cocoa Touch,Uiimageview,Uikit,Core Graphics,我有一种在屏幕上绘图的方法,它对我的应用程序有很多好处,只是有一个小问题,它不起作用。。。一点也不 我有一个带有UIImageView小部件的iOS程序,我试图以编程方式将其引入其中,但当我运行该程序时,它看起来只是黑色的。这是我的头文件中的出口声明: @interface TestViewController : UIViewController @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end …这是我的

我有一种在屏幕上绘图的方法,它对我的应用程序有很多好处,只是有一个小问题,它不起作用。。。一点也不

我有一个带有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
UIImageView
小部件的出口。我尝试将一个400 x 400的红色框绘制到一个图像中,并将该图像分配给小部件。我甚至打电话给
setNeedsDisplay
以获得更好的测量

我做错了什么?
谢谢大家!

这些线就是问题所在:

CGFloat colour[] = { 1, 0, 0, 1 };
CGContextSetFillColor(context, colour);
删除它们。相反,请按以下方式设置填充颜色:

 CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
出现问题的原因是未能创建颜色空间。您需要调用
CGContextSetFillColorSpace
,但未能调用。但只有在使用
CGContextSetFillColor
时才需要这样做。但它已被弃用,所以不要使用它。按照文档的建议,使用
CGContextSetFillColorWithColor
。它为您解决了颜色空间问题