【发布时间】:2014-05-09 15:01:39
【问题描述】:
我正在使用以下代码以编程方式添加UIToolbar。它应该处理基本的图像编辑,但是当我点击工具栏上的任何按钮时,我会收到此错误消息,并且不会调用选择器。 viewController 嵌入在UINavigationController 中,具有UIScrollView 和UIImageView。
我在这里发现该错误在某些情况下可能会被忽略,因为它是 iOS 中的一个错误,但是在我的情况下,我的选择器也不会与此消息一起被调用。我还发现有人在使用零大小的 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
}
【问题讨论】:
标签: ios objective-c core-graphics uitoolbar cgcontext