タグ付けされた質問 「core-graphics」

Core Graphicsは、Mac OS XおよびiOSでの低レベルの描画操作のためのAppleのフレームワークです。

16
UIViewの下に影を描画するにはどうすればよいですか?
UIViewCocoa Touchの下端に影を付けようとしています。CGContextSetShadow()影の描画に使用する必要があることは理解していますが、Quartz 2Dプログラミングガイドは少し曖昧です。 グラフィック状態を保存します。 関数を呼び出し、CGContextSetShadow適切な値を渡します。 影を付ける描画をすべて行います。 グラフィック状態を復元する 私はUIViewサブクラスで次のことを試しました: - (void)drawRect:(CGRect)rect { CGContextRef currentContext = UIGraphicsGetCurrentContext(); CGContextSaveGState(currentContext); CGContextSetShadow(currentContext, CGSizeMake(-15, 20), 5); CGContextRestoreGState(currentContext); [super drawRect: rect]; } ..しかし、これは私にとってはうまくいきません、そして(a)次にどこに行くべきか、そして(b)私UIViewがこの仕事をするために私にすべきことが何かあるかどうかについて私は少し行き詰まっていますか?

26
iOS 7.0での無効なコンテキスト0x0とシステムの劣化
私はこの恐ろしい問題について見つけることができる多くの検索結果を読みましたが、残念ながら、それぞれが特定の関数呼び出しに焦点を当てているようです。 私の問題は、複数の関数から同じエラーが発生することです。これは、使用している関数からコールバックされていると思います。 さらに悪いことに、実際のコードはカスタムプライベートフレームワーク内にあり、別のプロジェクトにインポートされているため、デバッグはそれほど単純ではありませんか? 誰かが私を正しい方向に向けることができますか?特定のメソッドを間違って、または不適切なコンテキストで呼び出しているように感じますが、現時点では、xcodeからの出力はあまり役に立ちません。 :CGContextSetFillColorWithColor:無効なコンテキスト0x0。これは重大なエラーです。このアプリケーションまたはそれが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性の全体的な低下の原因となっています。この通知は礼儀です:この問題を修正してください。今後のアップデートで致命的なエラーになります。 :CGContextSetStrokeColorWithColor:無効なコンテキスト0x0。これは重大なエラーです。このアプリケーションまたはそれが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性の全体的な低下の原因となっています。この通知は礼儀です:この問題を修正してください。今後のアップデートで致命的なエラーになります。 CGContextSaveGState:無効なコンテキスト0x0。これは重大なエラーです。このアプリケーションまたはそれが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性の全体的な低下の原因となっています。この通知は礼儀です:この問題を修正してください。今後のアップデートで致命的なエラーになります。 :CGContextSetFlatness:無効なコンテキスト0x0。これは重大なエラーです。このアプリケーションまたはそれが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性の全体的な低下の原因となっています。この通知は礼儀です:この問題を修正してください。今後のアップデートで致命的なエラーになります。 :CGContextAddPath:無効なコンテキスト0x0。これは重大なエラーです。このアプリケーションまたはそれが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性の全体的な低下の原因となっています。この通知は礼儀です:この問題を修正してください。今後のアップデートで致命的なエラーになります。 :CGContextDrawPath:無効なコンテキスト0x0。これは重大なエラーです。このアプリケーションまたはそれが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性の全体的な低下の原因となっています。この通知は礼儀です:この問題を修正してください。今後のアップデートで致命的なエラーになります。 :CGContextRestoreGState:無効なコンテキスト0x0。これは重大なエラーです。このアプリケーションまたはそれが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性の全体的な低下の原因となっています。この通知は礼儀です:この問題を修正してください。今後のアップデートで致命的なエラーになります。 :CGContextGetBlendMode:無効なコンテキスト0x0。これは重大なエラーです。このアプリケーションまたはそれが使用するライブラリは、無効なコンテキストを使用しているため、システムの安定性と信頼性の全体的な低下の原因となっています。この通知は礼儀です:この問題を修正してください。今後のアップデートで致命的なエラーになります。 これらのエラーは、カスタムビューまたはその継承クラスの1つが表示されたときに発生する可能性があります。その時点で、キーボードが入力を提供しなくなるまで、それらは複数回スポーンします。タッチイベントはまだ登録されていますが、システムの速度が低下し、最終的に未割り当てのオブジェクトエラーが発生する可能性があります。 編集#1:インポートされているフレームワークにアクセスできますが、問題の原因となっているクラスに奇妙なものは何もありません。 編集#2: iOS 7.1が開発者向けにリリースされたというメールを受信しました。これがなくなるか、悪化するか、解決できるかどうか知りたいです。

11
UIImage(Cocoa Touch)またはCGImage(Core Graphics)からピクセルデータを取得する方法
UIImage(Cocoa Touch)を持っています。そこから、CGImageなど、入手したいものを入手できてうれしいです。この関数を書きたい: - (int)getRGBAFromImage:(UIImage *)image atX:(int)xx andY:(int)yy { // [...] // What do I want to read about to help // me fill in this bit, here? // [...] int result = (red << 24) | (green << 16) | (blue << 8) | alpha; return result; }

16
UIImage:サイズ変更、次に切り抜き
私は文字通り何日もこの顔に顔をぶつけてきました。啓示の瀬戸際にいるといつも感じていますが、目標を達成することはできません。 私のデザインの概念的な段階の前に、iPhoneのカメラまたはライブラリから画像を取得し、アスペクトフィルオプションと同等の関数を使用して、指定した高さに縮小することは簡単なことだと思いました。(完全にコード内)UIImageView、その後、オフトリミング渡さCGRectに収まらなかったものを。 カメラまたはライブラリから元の画像を取得することは簡単でした。他の2つのステップがどれほど難しいかがわかったので、私はショックを受けました。 添付画像は私が達成しようとしていることを示しています。誰かが私の手を握るのに十分親切にしてくれませんか?これまでに見つけたすべてのコード例は、画像を壊したり、上下を逆にしたり、がらくたのように見えたり、範囲外に描画したり、そうでない場合は正しく機能しないようです。

18
CGContextDrawImageは、UIImage.CGImageを渡すと画像を上下逆に描画します
なぜ誰かがCGContextDrawImage私の画像を逆さまに描くのか知っていますか?アプリケーションから画像を読み込んでいます: UIImage *image = [UIImage imageNamed:@"testImage.png"]; そして、コアグラフィックスに私のコンテキストに描画するように要求します。 CGContextDrawImage(context, CGRectMake(0, 0, 145, 15), image.CGImage); 適切な場所とサイズでレンダリングされますが、画像は上下逆です。私はここで本当に明白な何かを見逃しているに違いありませんか?

19
UIImageを90度回転させる方法は?
私はUIImageであるUIImageOrientationUp私は(横に)90度回転反時計回りたいと(縦)。を使用したくありませんCGAffineTransform。のピクセルUIImageを実際に位置をシフトさせたい。私は元々UIImageこれを行うためにaのサイズを変更することを目的としたコードブロック(以下に表示)を使用しています。ターゲットサイズを現在のサイズとして設定しましたUIImageが、エラーが発生します。 (エラー):CGBitmapContextCreate:無効なデータバイト/行:8整数ビット/コンポーネント、3コンポーネント、kCGImageAlphaPremultipliedLastの場合、少なくとも1708である必要があります。 (ターゲットサイズBTWとして小さいサイズを指定しても、エラーは発生しません)。UIImage現在のサイズを維持しながら、コアグラフィック機能のみを使用して90度反時計回りに回転するにはどうすればよいですか? -(UIImage*)reverseImageByScalingToSize:(CGSize)targetSize:(UIImage*)anImage { UIImage* sourceImage = anImage; CGFloat targetWidth = targetSize.height; CGFloat targetHeight = targetSize.width; CGImageRef imageRef = [sourceImage CGImage]; CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); CGColorSpaceRef colorSpaceInfo = CGImageGetColorSpace(imageRef); if (bitmapInfo == kCGImageAlphaNone) { bitmapInfo = kCGImageAlphaNoneSkipLast; } CGContextRef bitmap; if (sourceImage.imageOrientation == UIImageOrientationUp || sourceImage.imageOrientation == UIImageOrientationDown) { …

7
ユーザーのタッチから真円を描く
私は、ユーザーが指でタッチしたときに画面に描画できるようにするこの練習プロジェクトを持っています。とてもシンプルなアプリです。私のいとこは、このアプリのiPadで指で物を描く自由を取りました(子供の絵:円、線など、思いついたものは何でも)。それから彼は円を描き始め、それを「良い円」にするように私に頼みました(私の理解から:描いた円を完全に丸くします。円は実際には円のように丸められることはありません)。 だから私の質問は、ユーザーが描いた線を最初に検出して、画面上で完全に円形にすることで、ほぼ同じサイズの円を生成できるコードに方法があるということです。直線ではない直線を作る方法は知っていますが、円に関しては、クォーツや他の方法でそれを行う方法がわかりません。 私の考えでは、ユーザーが指を離した後、線の始点と終点が互いに接触または交差して、実際に円を描こうとしているという事実を正当化する必要があります。

19
UIColorからわずかに明るい色と暗い色を取得する
UIColorをグラデーションにできるようにしようとしていました。これを行うつもりの方法は、Core Graphicsを使用してグラデーションを描画することです。私がやろうとしていることは、色を取得することです。 [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0]; いくつかの色合いが暗く、いくつかの色合いが明るいUIColorを取得します。誰でもこれを行う方法を知っていますか?ありがとうございました。

4
drawRectを描画するかどうか(drawRect / Core Graphics vs subviews / imagesを使用する必要があるのはなぜですか?)
この質問の目的を明確にするために:サブビューとdrawRectの両方を使用して複雑なビューを作成する方法を知っています。私はいつ、なぜ、どちらを使用するのかを完全に理解しようとしています。 また、事前に最適化することはあまり意味がなく、プロファイリングを実行する前に、より困難な方法を実行することも理解しています。私は両方の方法に慣れていると考えて、今は本当にもっと深く理解したいと思っています。 私の混乱の多くは、テーブルビューのスクロールパフォーマンスを本当にスムーズかつ高速にする方法を学ぶことから生じます。もちろん、このメソッドの元のソースは、iPhoneのTwitter(以前のTweetie)の作成者によるものです。基本的に、表のスクロールをスムーズにするための秘訣は、サブビューを使用せず、すべての描画を1つのカスタムuiviewで行うことです。基本的に、多くのサブビューを使用するとオーバーヘッドが大きくなるため、レンダリングが遅くなり、親ビューを介して常に再合成されるようです。 公平を期すために、これは3GSがかなり新しいブランドスパンキンであったときに書かれ、それ以来iDevicesはより速くなりました。それでも、この方法はインターウェブや他の場所で定期的 に高パフォーマンスのテーブルとして推奨されています。実際、これはAppleのTable Sample Codeで推奨される方法であり、いくつかのWWDCビデオ(Practical Drawing for iOS Developers)、および多くのiOS プログラミングブックで推奨されています。 グラフィックをデザインし、それらのコアグラフィックスコードを生成するための素晴らしいツールもあります。 だから、最初は「Core Graphicsが存在する理由はある。それが速い!」と信じるようになった。 しかし、「可能な限りお気に入りのコアグラフィックス」というアイデアが浮かんだと思うとすぐに、drawRectがアプリの応答性の低下の原因であることが多く、メモリの消費が非常に高く、CPUに大きな負担がかかることがわかります。基本的に、「drawRectのオーバーライドを回避する」必要があります(WWDC 2012 iOSアプリのパフォーマンス:グラフィックとアニメーション)) だから、すべてのように、それは複雑だと思います。多分あなたは私と他の人がdrawRectを使用するときと理由を理解するのを助けることができますか? Core Graphicsを使用する明らかな状況がいくつかあります。 動的データがある(Appleの株価チャートの例) シンプルなサイズ変更可能な画像では実行できない柔軟なUI要素がある あなたは動的グラフィックを作成しており、一度レンダリングされると複数の場所で使用されます Core Graphicsを回避する状況が見られます。 ビューのプロパティは個別にアニメーション化する必要があります ビューの階層が比較的小さいので、CGを使用して知覚される余分な労力は利益に値しません すべてを再描画せずにビューの一部を更新したい サブビューのレイアウトは、親ビューのサイズが変更されたときに更新する必要があります だからあなたの知識を授けなさい。drawRect / Core Graphicsにはどのような状況で到達しますか(これはサブビューでも実行できます)?その決定にあなたを導く要因は何ですか?どのように/なぜバターのようなスムーズなテーブルセルスクロールに推奨される1つのカスタムビューで描画するのに、Appleは一般にパフォーマンス上の理由からdrawRectを推奨していませんか?シンプルな背景画像はどうですか(サイズ変更可能なpng画像を使用する場合と、CGを使用して作成する場合)。 価値のあるアプリを作成するためにこのテーマを深く理解する必要はないかもしれませんが、理由を説明できない限り、テクニックを選択するのは好きではありません。私の脳は私に腹を立てます。 質問の更新 情報ありがとうございます。ここにいくつかの明確化する質問: コアグラフィックスで何かを描画しているが、UIImageViewsと事前レンダリングされたpngで同じことを達成できる場合は、常にそのルートをたどりますか? 同様の質問:特にこのようなbadassツールではでは、コアグラフィックスにインターフェイス要素を描画することを検討する必要があるのはいつですか?(おそらく、要素の表示が可変である場合。たとえば、20の異なるカラーバリエーションがあるボタン。他のケースはありますか?) 以下の私の回答を理解しているとしたら、複雑なUIViewのレンダリング自体の後にセルのスナップショットビットマップを効果的にキャプチャし、複雑なビューをスクロールして非表示にしているときにそれを表示することで、テーブルセルと同じパフォーマンス向上が得られるでしょうか?明らかに、いくつかの作品は解決する必要があります。ただ面白いと思った。

6
iPhoneで色付きの1x1 UIImageを動的に作成する方法は?
UIColorに基づいて動的に1x1 UIImageを作成したいと思います。 これはQuartz2dですぐに実行できると思います。そして、基礎を理解しようとするドキュメントを調べています。ただし、潜在的な落とし穴がたくさんあるようです。物ごとのビット数とバイト数を正しく識別していない、正しいフラグを指定していない、未使用のデータを解放していない、などです。 Quartz 2d(または別の簡単な方法)でこれを安全に行うにはどうすればよいですか?

6
iOS 7スタイルのぼかしビュー
iOS7スタイルのぼかしビューを複製するコントロールを知っている人はいますか? 動作を複製するUIViewサブクラスの種類があると思います。 これらのタイプのビューとは、背景を非常に濃くぼかし、背景ビューからの引き寄せ効果があるタイプのビューのことです。


8
影の広がりとぼかしを制御する方法は?
私はスケッチでUI要素を設計しましたが、そのうちの1つにぼかし1と広がり0の影があります。ビューのレイヤープロパティのドキュメントを調べましたが、レイヤーには広がりまたはぼかし、または同等の名前の付いたものはありません(唯一のコントロールは単にshadowOpacity)ぼかしや広がりなどをどのように制御できますか? 編集: ここに私のスケッチの設定があります: そして、これは私が私の影をどのように見せたいかです: 現時点での表示は次のとおりです。注:実際に影を表示するには、画像をクリックする必要があります。 私のコードは次のとおりです: func setupLayer(){ view.layer.cornerRadius = 2 view.layer.shadowColor = Colors.Shadow.CGColor view.layer.shadowOffset = CGSize(width: 0, height: 1) view.layer.shadowOpacity = 0.9 view.layer.shadowRadius = 5 }

15
UILabelにアウトラインテキストを表示させるにはどうすればよいですか?
私が欲しいのは、白いUILabelテキストの周りの1ピクセルの黒い境界線だけです。 私は以下のコードでUILabelをサブクラス化するところまで行きました。そして、それは機能しますが、非常に遅く(シミュレータを除いて)、テキストを垂直方向に中央揃えすることもできませんでした(そのため、最後の行のy値を一時的にハードコードしました)。ああ! void ShowStringCentered(CGContextRef gc, float x, float y, const char *str) { CGContextSetTextDrawingMode(gc, kCGTextInvisible); CGContextShowTextAtPoint(gc, 0, 0, str, strlen(str)); CGPoint pt = CGContextGetTextPosition(gc); CGContextSetTextDrawingMode(gc, kCGTextFillStroke); CGContextShowTextAtPoint(gc, x - pt.x / 2, y, str, strlen(str)); } - (void)drawRect:(CGRect)rect{ CGContextRef theContext = UIGraphicsGetCurrentContext(); CGRect viewBounds = self.bounds; CGContextTranslateCTM(theContext, 0, viewBounds.size.height); CGContextScaleCTM(theContext, …

6
NSLogとCGPointデータ
タッチが割り当てられているポイントと呼ばれるCGPointがあります。 UITouch *touch = [touches anyObject]; CGPoint point = [touch locationInView:self]; x座標値をコンソールログに取得します。 NSLog(@"x: %s", point.x); これを使用すると、このログ出力は次のようになります。 x:(null) これがデバッガーと変数ウォッチを使用して呼び出されたときに、ポイントがnullではないことを確認しました。 助けてくれてありがとう、 ありがとう// :)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.