2013-05-14 3 views
2

У меня есть метод рисования на экране, который имеет много преимуществ для моего приложения, за исключением небольшой проблемы, что она не работает ... вообще.Как программно рисовать на дисплее в iOS?

У меня есть программа iOS с виджетами UIImageView, и я пытаюсь программно врисовать ее, но она просто выглядит черной, когда я запускаю программу. Это объявление на выходе в моем файле заголовка:

@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 для хорошей меры.

Что я делаю неправильно? Спасибо!

ответ

3

Эти линии являются проблемой:

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

Удалить их. Вместо этого установите цвет заливки таким образом:

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

Причина вашей проблемы является то, что вы были не в состоянии создать цветовое пространство. Вам нужно было позвонить CGContextSetFillColorSpace, и вам это не удалось. Но это необходимо, только если вы используете CGContextSetFillColor. Но он устарел, поэтому не используйте его. Используйте CGContextSetFillColorWithColor, как рекомендуют документы. Он заботится о проблеме цветового пространства для вас.

Смежные вопросы