Почему я не могу нарисовать что-то на своем UIView? - PullRequest
1 голос
/ 19 февраля 2010

Это мой главный вид, я просто хочу, чтобы он нарисовал что-то для тестирования, но я обнаружил, что в моем интерфейсе ничего нет, вот код:

- (void)viewDidLoad {
    [super viewDidLoad];

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 2.0); 
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
    CGContextMoveToPoint(context, 100.0f, 100.0f); 
    CGContextAddLineToPoint(context, 200.0f, 200.0f); 
    CGContextStrokePath(context);


}

Это примерКод, который я скопировал онлайн.Я предполагаю, что код правильный, в нем нет ошибок, но ничего не появляется.Или ... ... этот код не должен вставляться в viewDidLoad?

Ответы [ 2 ]

4 голосов
/ 19 февраля 2010

viewDidLoad не имеет контекста.Вам нужно будет создать контекст изображения, сделать чертеж, создать изображение, а затем добавить его в представление следующим образом:

UIGraphicsBeginImageContext();
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0); 
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
CGContextMoveToPoint(context, 100.0f, 100.0f); 
CGContextAddLineToPoint(context, 200.0f, 200.0f); 
CGContextStrokePath(context);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
[self.view addSubview:imgView];
[imgView release];

Редактировать: viewDidLoad - это метод UIViewController, а не метод UIView.Я предполагаю, что этот код находится в вашем контроллере, я прав?Кроме того, viewDidLoad вызывается только после загрузки представления из кончика.Вы использовали перо (xib, созданное с помощью Interface Builder) или создавали свое представление программно?

1 голос
/ 20 февраля 2010

Чтобы нарисовать вид с помощью вашего кода, вам нужно переопределить -drawRect: вместо -viewDidLoad.

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect]; // not necessary

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 2.0); 
    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); 
    CGContextMoveToPoint(context, 100.0f, 100.0f); 
    CGContextAddLineToPoint(context, 200.0f, 200.0f); 
    CGContextStrokePath(context);


}
...