残念なことに、どの検索結果も特定の関数呼び出しに焦点を当てているようです。
私の問題は、私が使っている関数からコールバックされていると思われる複数の関数から同じエラーが出ることです。
さらに悪いことに、実際のコードはカスタムプライベートフレームワーク内にあり、別のプロジェクトでインポートされているため、デバッグはそれほど簡単ではありません。
どなたか正しい方向を教えていただけませんか?私はあるメソッドを間違って呼んでいるか、悪いコンテキストで呼んでいるような気がするのですが、xcodeからの出力は今のところあまり役に立ちません。
:CGContextSetFillColorWithColor: invalid context 0x0.これは 深刻なエラーです。このアプリケーション、またはそのアプリケーションが使用しているライブラリは、無効なコンテキストを使用しています。 無効なコンテキストを使用しているため、システムの安定性と信頼性を低下させています。 システムの安定性と信頼性を低下させています。この通知は礼儀です。 この問題を修正してください。今後のアップデートで致命的なエラーになります。 >; <エラー>:CGContextSetStrokeColorWithColor: invalid context 0x0.これは 深刻なエラーです。このアプリケーション、またはそのアプリケーションが使用しているライブラリは、無効なコンテキストを使用しています。 無効なコンテキストを使用しています。 システムの安定性と信頼性を低下させています。この通知は この問題を修正してください。次のアップデートで致命的なエラーになります。 今後のアップデートで致命的なエラーになります。 この問題は、今後のアップデートで致命的なエラーになります; CGContextSaveGState: 無効なコンテキスト 0x0.これは深刻なエラーです。 これは深刻なエラーです。 システム全体の安定性と信頼性を低下させています。 安定性と信頼性の全体的な低下の原因となっています。この通知は礼儀です。 この問題を修正してください。今後のアップデートで致命的なエラーになります。 >; <エラー>:CGContextSetFlatness: invalid context 0x0.これは深刻な エラーです。このアプリケーション、またはそのアプリケーションが使用しているライブラリは、無効な> コンテキストを使用しています。 システムの安定性と信頼性を低下させています。 システムの安定性と信頼性を低下させています。この通知は礼儀です。 この問題を修正してください。今後のアップデートで致命的なエラーになります。 ということです; >; <エラー>:CGContextAddPath: invalid context 0x0.これは重大な エラーです。このアプリケーション、またはそのアプリケーションが使用しているライブラリは、無効な> コンテキストを使用しています。 システムの安定性と信頼性を低下させています。 システムの安定性と信頼性を低下させています。この通知は礼儀です。 この問題を修正してください。今後のアップデートで致命的なエラーになります。 この問題は、今後のアップデートで致命的なエラーとなります; <エラー>:CGContextDrawPath: invalid context 0x0.これは深刻な エラーです。このアプリケーション、またはそのアプリケーションが使用しているライブラリは、無効な> コンテキストを使用しています。 システムの安定性と信頼性を低下させています。 システムの安定性と信頼性を低下させています。この通知は礼儀です。 この問題を修正してください。今後のアップデートで致命的なエラーになります。 ということです; >; <エラー>:CGContextRestoreGState: invalid context 0x0.これは 深刻なエラーです。このアプリケーション、またはそのアプリケーションが使用しているライブラリは、無効なコンテキストを使用しています。 システムの安定性と信頼性を低下させています。 システムの安定性と信頼性を低下させています。この通知は礼儀です。 この問題を修正してください。今後のアップデートで致命的なエラーになります。 この問題は、今後のアップデートで致命的なエラーになります; >; <エラー>:CGContextGetBlendMode: invalid context 0x0.これは深刻な エラーです。このアプリケーション、またはそのアプリケーションが使用しているライブラリは、無効な> コンテキストを使用しています。 システムの安定性と信頼性を低下させています。 システムの安定性と信頼性を低下させています。この通知は礼儀です。 この問題を修正してください。今後のアップデートで致命的なエラーになります。
これらのエラーは、カスタムビュー、またはその継承クラスの1つが表示されたときに発生する可能性があります。このとき、キーボードが入力を提供しなくなるまで、エラーが何度も発生します。タッチイベントはまだ登録されていますが、システムは遅くなり、最終的には未割り当てオブジェクトエラーにつながる可能性があります。
EDIT #1: インポートされているフレームワークにアクセスすることはできますが、問題を引き起こしているクラスに奇妙なものは見当たりません。
EDIT #2: iOS 7.1が開発者向けにリリースされたというメールを受け取りました。iOS7.1が開発者向けにリリースされたというメールを受け取りました。
他の人は、コアグラフィックコンテキストにアクセスしているコードを投稿するよう求めるでしょうが、私はそれが問題だとは思いません。これらの無効なコンテキスト0x0エラーメッセージはiOS 7ではよくあることで、簡単に再現できます。実際、私はコードなしでストーリーボードを使ってエラーを再現することができます。IBでUITextFieldをキャンバスにドラッグしてアプリを実行し、テキストフィールド内をダブルタップする。
多くの場合、invalid context 0x0のエラーメッセージを真に受けるのは難しい。特にグラフィック・コンテキストを明示的に使用している場合は、調査する価値があるというRob Napier氏の意見に同意します)。
私自身のプロジェクトでは、これらのエラーの多くがいつか魔法のように消えてくれることを願っています(しかし、その日は7.0.3では来ませんでした)。
**Xcode 5.1をインストールし、iOS 7.1をターゲットにしたところ、空のテキストフィールド内をダブルタップしてもエラーが再現されなくなりました。
この種のエラーは歴史的に、drawRect
内で確立されたコンテキスト内でないとき、またはUIGraphicsBeginImageContext
とUIGraphicsEndImageContext
のような呼び出し(またはコンテキストを開始したり終了したりする他のUIKit関数)の間にCore Graphics関数を呼び出した結果として発生します。
とはいえ、bilobatumさんの言う通り、この一連のエラーはiOS 7のバグの可能性があります。もしあなたのiOS6ターゲットでこのようなエラーが表示されない場合、またはこのプライベートフレームワークをざっとスキャンした後に疑わしいCore Graphicsコールが見つからない場合、それはiOS 7のバグかもしれません。bilobatumさん、よく見つけました!
単純なUITextFieldでこの問題が発生しました(キーボードが表示されず、コンソールにさまざまな無効なコンテキストエラーメッセージが表示されます)。 SOの別の問題を調べて回避策を見つけます:https://stackoverflow.com/questions/18888059/cannot-find-executable-for-cfbundle-certuiframework-axbundle。
ただ:
iOSシミュレーターをクリック>コンテンツと設定をリセットします。.. もう一度実行します。
問題はもうそこにあるべきではありません。
私の場合、このコードにこれらのエラーがあります。
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
UIBezierPath *path;
path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0, 0)];
[path addLineToPoint:CGPointMake(size*2, 0)];
[path addLineToPoint:CGPointMake(size, size*2)];
[path closePath];
[path fill];
shapeLayer.path = path.CGPath;
shapeLayer.strokeColor = [[UIColor blackColor] CGColor];
shapeLayer.fillColor = color;
shapeLayer.lineWidth = width;
[self addSublayer:shapeLayer];
いくつかの考えとテストの後、私は問題を検出しました-それはこの呼び出しでした:
[path fill];
私が検出したとき-私のコードでは、この呼び出しは必要ありません。これは、充填が他の方法で行われるためです-したがって、単に削除します。
drawInContext(。.)カスタムCALayer実装の方法。 UIBezierPathは、カスタムレイヤーでデフォルトでnilであるUIGraphicsGetCurrentContext()を使用しようとします。 オンラインドキュメントはこれを非常に明確に説明しています-。
ただし、UIViewオブジェクトを使用して描画を行わない場合は、UIGraphicsPushContext関数を使用して有効なコンテキストを手動でスタックにプッシュする必要があります。
これが最終的に私のコメントをインラインで処理したコードです(Swiftコードですが、ソリューションは関係ありません)。
override func drawInContext(ctx: CGContext!) {
var path = UIBezierPath()
// 1. Make sure you push the CGContext that was first passed into you.
UIGraphicsPushContext(ctx)
path.moveToPoint(CGPoint(x: 0, y: 0))
path.addLineToPoint(CGPoint(x: 150, y: 150))
var lineColor = UIColor.blueColor()
lineColor.setStroke()
path.lineWidth = 2
path.stroke(
// 2. Pop the context after you are done.
UIGraphicsPopContext()
}
私の場合、キャップのインセットで再シブル画像を作成するときにこの警告が表示されていました。 問題は、「キャップのない」領域に少なくとも1ピクセルを残していないことでした。
UIImage *image = [UIImage imageNamed:@"name"];
UIEdgeInsets edgeInsets = UIEdgeInsetsMake(20, 10, 20, 10); //Problem here if the width is 20 or the height is 40
image = [image resizableImageWithCapInsets:edgeInsets];
UIGraphicsGetCurrentContext()
から返されるコンテキストが NULL
である場合があり、何かに使用しようとすると、このメッセージが表示されます。 drawRect:
を呼び出す前に UIGraphicsPushContext
を使用してコンテキストを押すことはビューの責任です。[view setNeedsDisplay]
の代わりに drawRect:
を直接呼び出すと、コンテキストがまだ設定されていないリスクがあります。 私の直感は、iOS 7の前にコンテキストが「init」のビューにプッシュされ、iOS 7では初めて「drawRect:」が呼び出されるまでコンテキストがプッシュされないことです。 一部のUIKitコードが drawRect:
を直接呼び出しているのではないかと思います。これが、カスタム描画が行われていない場合でも、一部のコードに問題がある理由です。
ソリューション(カスタム描画を行う場合):
1。 drawRect:
に直接電話しないでください。[view setNeedsDisplay]
を使用します。すぐに描画が必要な場合は、[view.layer draw]
を使用します。
2。 drawRect:
でコンテキストを取得しますが、 if(コンテキスト){< do drawing here>}
の場合、この本文の外で使用しないでください。
コードにエラーが発生しました。
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:pointA];
[path addLineToPoint:pointB];
[path addLineToPoint:pointC];
[[UIColor colorWithHexString:@"EFEFEF"] set];
[path fill];
[path closePath];
CAShapeLayer *triangle = [CAShapeLayer layer];
triangle.fillColor = [UIColor colorWithHexString:@"EFEFEF"].CGColor;
triangle.path = path.CGPath;
return triangle;
コードを削除した後。
[[UIColor colorWithHexString:@"EFEFEF"] set];
[path fill];
世界は沈黙した。
以下のコードを使用して、コンテキストからUIImageを作成していました。
。 UIGraphicsBeginImageContext(size); . CGContextRefコンテキスト= UIGraphicsGetCurrentContext();。CGContextSetFillColorWithColor(context, color.CGColor); CGContextFillRect(context, (CGRect){.size = size}); UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();
< / pre>。
したがって、私はエラーを取得していました。
そこで、派生データコンテンツを削除し、XCodeを再起動しました。 そしてそれはうまくいった。
私も同じ問題を抱えています。 私のプロジェクトでは、textFieldを作成してPDFファイルに追加しようとしています。 古いコード:
- (void) drawInContext:(CGContextRef)context {
//Otherwise we're upside-down
CGContextSetTextMatrix(context, CGAffineTransformMake(1.0,0.0, 0.0, -1.0, 0.0, 0.0));
CGContextSetTextDrawingMode(context, kCGTextFill); // This is the default
[[UIColor blackColor] setFill]; // ***This is the problem ***
CGFloat x = self.rect.origin.x;
CGFloat y = self.rect.origin.y + self.font.pointSize;
[self.text drawAtPoint:CGPointMake(x, y)
withAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Arial" size:12]}];
}
この問題を解決した後、コードが変更されました。
old:[[UIColor blackColor] setFill];
new:CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);
解決策はhttps://stackoverflow.com/questions/10623545/uicolor-setfill-doesnt-workで見つかりました。 そしてヘルパーに感謝します。
これはハッキーですが、私にとってはうまくいきました。
UITableViewCell
の init
に UIImageView
を設定し、サイズと制約を与えます。
次に、私のビューコントローラーの「cellForRowAtIndexPath」でこれを行います。
let img = PFImageView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
img.setImage(withFile: nil, defaultText: message.senderUsername)
cell.profileImageView?.image = img.image
これによりエラーが回避され、その下に関数で実際の画像が設定されます UIImageView
。 上記のコードは良いデフォルトです。
プレースホルダーのテキストだけで空白のフィールドに触れたとき、私はUITextFieldでこの問題を抱えていました。 空白のフィールドを削除するために、次の回避策を使用しました。
-(void)textFieldDidBeginEditing:(UITextField *)textField{
textField.text=[@" " stringByAppendingString:textField.text];
//other stuff here
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
if(textField.text.length>0){
if([[textField.text substringToIndex:1] isEqualToString:@" "])
textField.text=[textField.text substringFromIndex:1];
}
// other stuff here
}