2016-02-25 7 views
1

Я хочу нарисовать линию между 2 точками. Но UIGraphicsGetCurrentContext() является возвращение нулевойничья линия между 2 точками в объективе-c

ViewController.m

self.drawLine.firstPoint = self.btnPointOne.bounds.origin; 
self.drawLine.secondPoint = self.btnPointTwo.bounds.origin; 
[self.drawLine drawRect:self.drawWatchModeView.bounds]; 

DrawLine.h

@interface DrawLine : UIView{ 
    CGContextRef context; 
} 

@property (assign, nonatomic) CGPoint firstPoint; 
@property (assign, nonatomic) CGPoint secondPoint; 

DrawLine.m

- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) { 
    } 
    return self; 
} 

- (void)drawRect:(CGRect)rect { 
    context = UIGraphicsGetCurrentContext(); 
    // Drawing code 
    CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor); 
    //line width 
    CGContextSetLineWidth(context, 1.0); 
    CGContextMoveToPoint(context, self.firstPoint.x, self.firstPoint.y); 
    CGContextAddLineToPoint(context, self.secondPoint.x, self.secondPoint.y); 
    // and now draw the Path! 
    CGContextStrokePath(context); 
} 

Но ошибка

CGContextSetStrokeColorWithColor: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextSetLineWidth: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextMoveToPoint: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextAddLineToPoint: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextDrawPath: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextSetStrokeColorWithColor: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextSetLineWidth: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextMoveToPoint: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextAddLineToPoint: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextDrawPath: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextSetStrokeColorWithColor: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextSetLineWidth: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextMoveToPoint: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextAddLineToPoint: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextDrawPath: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextSetStrokeColorWithColor: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextSetLineWidth: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextMoveToPoint: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextAddLineToPoint: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.
CGContextDrawPath: недопустимый контекст 0x0. Если вы хотите увидеть обратную трассировку, установите переменную окружения CG_CONTEXT_SHOW_BACKTRACE.

Я пытаюсь установить UIViewControllerBasedStatusBarAppearanceYES это не работает для меня я стараюсь, чтобы удалить UIViewControllerBasedStatusBarAppearance это не работает для меня

ответ

1

Вы не можете просто позвонить drawRect: всякий раз, когда вы хотите, так что ваша линия:

[self.drawLine drawRect:self.drawWatchModeView.bounds]; 

необходимо изменить, чтобы попросить ОС выполнить цикл розыгрыша. Когда это произойдет, контекст рисования будет настроен, и все будет готово. Когда вы выполняете его явно, что контекст не существует. Таким образом, измените эту линию:

[self.drawLine setNeedsDisplay]; 

или

[self.drawLine setNeedsDisplayInRect:self.drawWatchModeView.bounds]; 
+0

Это здорово спасибо для вас предложение –