#objective-c #macos #cocoa #nsview #nswindow
#objective-c #macos #cocoa #nsview #nswindow
Вопрос:
У меня есть контроллер 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.
Комментарии:
1. В чем ошибка? Вы установили переменную среды CG_CONTEXT_SHOW_BACKTRACE?
2. @Willeke обновил ошибки, о которых идет речь. Я не устанавливал переменную CG_CONTEXT_SHOW_BACKTRACE.