다음 코드를 사용하여 프로그래밍 방식으로 UIToolbar
을 추가하고 있습니다. 그것은 기본 이미지 편집을 처리해야하지만 도구 모음에서 아무 버튼이나 누르면이 오류 메시지가 대신 표시되고 선택기가 호출되지 않습니다. viewController는 UINavigationController
에 임베드되어 있고 UIScrollView
은 UIImageView
입니다.도구 모음 단추 선택기가 콘솔의 메시지와 함께 실행되지 않았습니다. <Error> : CGContextSaveGState : 유효하지 않은 컨텍스트
나는이 상황에서 iOS의 버그이기 때문에 오류가 무시 될 수도 있음을 발견했습니다. 그러나 제 선택기에서도이 메시지와 함께 호출되지 않습니다. 나는 또한 누군가가이 오류를 0 크기의 CGContext로 얻었고 CGContext로 캡처하는 일부 이미지를 찾았지만 제대로 작동하고 툴바 버튼과 선택기와 관련이 없다. 어떤 제안?
<Error>: CGContextSaveGState: invalid context 0x0. This is a serious error.
This application, or a library it uses, is using an invalid context and is
thereby contributing to an overall degradation of system stability and
reliability. This notice is a courtesy: please fix this problem. It will
become a fatal error in an upcoming update.
코드 :
- (void)addBasicToolbar
{
// create toolbar
UIToolbar *basicToolbar = [[UIToolbar alloc] init];
basicToolbar.barStyle = UIBarStyleBlack;
basicToolbar.translucent = NO;
basicToolbar.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:basicToolbar];
// add constraints
NSDictionary *metrics = @{@"barHeight":@44.0};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[basicToolbar]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(basicToolbar)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[basicToolbar(==barHeight)]|" options:0 metrics:metrics views:NSDictionaryOfVariableBindings(basicToolbar)]];
// add bar buttons
UIBarButtonItem *rotateLeft = [[UIBarButtonItem alloc] initWithTitle:@"Rotate left" style:UIBarButtonItemStylePlain target:self action:@selector(rotateLeft)];
UIBarButtonItem *rotateRight = [[UIBarButtonItem alloc] initWithTitle:@"Rotate right" style:UIBarButtonItemStylePlain target:self action:@selector(rotateRight)];
UIBarButtonItem *resetButton = [[UIBarButtonItem alloc] initWithTitle:@"Revert to original" style:UIBarButtonItemStylePlain target:self action:@selector(resetToOriginal)];
UIBarButtonItem *markupButton = [[UIBarButtonItem alloc] initWithTitle:@"Add markup" style:UIBarButtonItemStylePlain target:self action:@selector(addMarkup)];
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
basicToolbar.items = @[resetButton, flexibleSpace, rotateLeft, rotateRight, flexibleSpace, markupButton];
}
- (void)rotateLeft
{
NSLog(@"rotate left called"); // but is actually not called
}