Как исправить журналы ошибок CGContext в Mac-приложении? - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть контроллер NSWindow, в котором у меня есть NSBox, который снова содержит Textfield и imageview. это торговые точки.

IBOutlet NSBox *featuresBox;
IBOutlet NSImageView *screenImageView;
IBOutlet NSTextField *screenTextField;

Я хочу, чтобы они использовались для управления страницей BFPageControl

Window didload

    NSRect frame = self.window.frame;
    BFPageControl *control = [[BFPageControl alloc] init];
    control.delegate = self;
//screens array @[
//               @{@"image":@"screen_0", @"text":@"❖ _screen_0 text"},
 //              @{@"image":@"screen_1",@"text":@"❖ _screen_1 text "},
 //              @{@"image":@"screen_2",@"text":@"❖ _screen_2 text ."},
 //              @{@"image":@"screen_3",@"text":@"❖ _screen_3text"}    //                ];
    control.numberOfPages = screensArray.count;
    control.indicatorDiameterSize = 15.0;
    control.indicatorMargin = 5.0;
    control.currentPage = 0;
    control.useHandCursor = YES;
    [control setDrawingBlock: ^(NSRect frame, NSView *aView, BOOL isSelected, BOOL isHighlighted){

        frame = CGRectInset(frame, 2.0, 2.0);
        NSBezierPath *path = [NSBezierPath bezierPathWithOvalInRect: CGRectMake(frame.origin.x, frame.origin.y + 1.5, frame.size.width, frame.size.height)];
        [[NSColor whiteColor] set];
        [path fill];

        path = [NSBezierPath bezierPathWithOvalInRect: frame];
        NSColor *color = isSelected ? [NSColor colorWithCalibratedRed: (115.0 / 255.0) green: (115.0 / 255.0) blue: (115.0 / 255.0) alpha: 1.0] :
        [NSColor colorWithCalibratedRed: (217.0 / 255.0) green: (217.0 / 255.0) blue: (217.0 / 255.0) alpha: 1.0];

        if(isHighlighted)
            color = [NSColor colorWithCalibratedRed: (150.0 / 255.0) green: (150.0 / 255.0) blue: (150.0 / 255.0) alpha: 1.0];

        [color set];
        [path fill];

        frame = CGRectInset(frame, 0.5, 0.5);
        [[NSColor colorWithCalibratedRed: (25.0 / 255.0) green: (25.0 / 255.0) blue: (25.0 / 255.0) alpha: 0.15] set];
        [NSBezierPath setDefaultLineWidth: 1.0];
        [[NSBezierPath bezierPathWithOvalInRect: frame] stroke];
    }];
    [self.window.contentView addSubview: control];
    CGSize size = [control intrinsicContentSize];
    [control setFrame: CGRectMake((frame.size.width - size.width)/2, 58, size.width, size.height)];

Использование метода делегирования BFPagecontrol изменяет страницы и изменяет изображение и содержимое текстового поля, но проблема в том, что когда я пытаюсь изменить страницы, я получаю журналы, подобные please set CG_CONTEXT_SHOW_BACKTRACE environmental variable, как исправить эту проблему.

- (void)pageControl:(BFPageControl *)pageControl didSelectPageAtIndex:(NSInteger)index {
    screenImageView.image = [NSImage imageNamed:screensArray[index][@"image"]];
    screenTextField.stringValue = [NSString stringWithFormat:@"%@", screensArray[index][@"text"]];
}

ошибки

CGContextSetFillColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetStrokeColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable
CGContextGetCompositeOperation: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetCompositeOperation: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextFillRects: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
CGContextSetFillColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
...