2016-09-05 5 views
-2

Что делать? Я получаю эту ошибку, когда устанавливаю переменную Backtracing.«Недопустимый контекст 0x0» при заполнении UIBezlerPath

Этот код вызывает ошибку точно:

UIBezierPath* ovalPath = [UIBezierPath bezierPath]; 
[ovalPath addArcWithCenter: CGPointMake(CGRectGetMidX(ovalRect), CGRectGetMidY(ovalRect)) radius: CGRectGetWidth(ovalRect)/2 startAngle: 180 * M_PI/180 endAngle: 0 * M_PI/180 clockwise: YES]; 
[ovalPath addLineToPoint: CGPointMake(CGRectGetMidX(ovalRect), CGRectGetMidY(ovalRect))]; 
[ovalPath closePath]; 

[UIColor.grayColor setFill]; 
[ovalPath fill]; 

Ошибка:

CGContextSetFlatness: invalid context 0x0. Backtrace: 
    <<redacted>+48> 
    <-[ViewController viewDidLoad]+2868> 
    <<redacted>+996> 
    <<redacted>+28> 
     <<redacted>+76> 
     <<redacted>+252> 
     <<redacted>+48> 
     <<redacted>+3456> 
      <<redacted>+1684> 
      <<redacted>+168> 
      <<redacted>+36> 
      <<redacted>+168> 
       <<redacted>+56> 
       <<redacted>+24> 
       <<redacted>+540> 
       <<redacted>+724> 
        <CFRunLoopRunSpecific+384> 
        <<redacted>+460> 
        <UIApplicationMain+204> 
        <main+124> 
Sep 5 21:55:56 Motion Tracking Radar - Aliem[2934] <Error>: 

ответ

3

[ovalPath fill] можно назвать только при наличии в настоящее время глобальный CGContext (т.е. вызова UIGraphicsGetCurrentContext() будет возвращать нечто иное, чем nil). Самый распространенный способ получить это - запустить в пределах drawRect:, но вы можете создать временные объекты CGContext, если хотите, используя, как правило, CGBitmapContextCreate, и сделать его текущим контекстом с UIGraphicsPushContext.

В большинстве случаев, когда люди сталкиваются с этой проблемой, это связано с тем, что они считают, что они могут рисовать на экране в случайных точках программы. Это неправда. Вы можете рисовать только во время цикла розыгрыша, что чаще всего достигается путем помещения вашего кода в . (Существуют другие варианты, использующие слои или тому подобное, но это наиболее распространенный подход.)

См. Drawing and Printing Guide for iOS (или эквивалентный на Mac) для ознакомления с рисунком Какао.

+0

Спасибо большое! :) – chronikum

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

  • Нет связанных вопросов^_^