問題タブ [cglayer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - IUView からの CGLayer
iPhone または iPad で、UIView から CGLayer (CALayer ではない) を取得する方法を知っている人はいますか?
よろしく
iphone - CGLayer へのキャッシュが iPhone での再描画より遅い
iPhone用の簡単な描画プログラムを作成中です。現時点では、タッチ イベントはその場所をリストに追加します。このリストは、drawRect への呼び出しごとに再描画される一連の CGContextAddLineToPoint 呼び出しに接続されています。
かなり少ない行数でパフォーマンスの問題が発生しています (ただし、透過的です)。そのため、すべてを CGLayer に描画してみました。ここで、フレームごとに各線を描画する代わりに、各線を 1 回だけ描画し、フレームごとに CGLayer を画面に描画します。
これは、どちらかといえば、以前に行っていたものよりも遅いです。私は何か間違ったことをしていますか?UIImage などに描画した方がよいでしょうか? ありがとう。
iphone - Core Graphics のアニメーション描画を最適化する (iPhone)
関数を毎秒 30 回起動するループがあります。この関数は、アニメーション化に使用するいくつかのポイントの位置を変更します。すべての点を通る線を引きます。つまり、線は 1 秒間に 30 回変化します。
これらの線を CGLayer に描画し、次に drawRect: メソッドで UIView に描画します。オフスクリーンで描画するとパフォーマンスが向上することを理解しているため、これを行います。ただし、CGLayer は、描画されたピクセルではなく実際のすべての線を保存しているようです。これをクリアしても、より多くの線が描画されると、プログラムの実行速度が徐々に遅くなるからです。
これをアニメーション化する他の方法を求めています。最も効率的な方法とその理由は何ですか?
macos - CGLayersとCALayersの混合
設定は次のとおりです。
CALayerでバックアップされたビューであり、多くのCALayerが含まれているNSViewがあります。ビューの「背景」用のCALayerと、サブレイヤーである多くの小さなCALayerがあります。このビューは非常に大きくなる場合があり(2560x1400まで)、その場合、CALayersに非常に顕著な遅延があります。私の推測では、CoreAnimationは非常に大きなCALayersで問題を抱えています。
そこで、この「背景」レイヤーをCALayerから、通常のCGLayerのようにビューにレンダリングされるCGLayerなどに変更したいと思います。ただし、それに加えて、小さなCALayersは現在と同じように動作します。そうすれば、小さなCALayerしかなく、「バックグラウンド」レイヤーをCGLayerにキャッシュでき、パフォーマンスが大幅に向上することを願っています。
誰もがこれをどのように達成できるか知っていますか?
iphone - UIImageViewとUIImageの事前レンダリングに角丸を追加しますか?
特に丸みを帯びた角を追加する、UIImageView のレイヤーを試しています。
私の質問は、次のことを行うことによるパフォーマンスへの影響(ある場合)は何ですか:
事前に画像を「事前レンダリング」します。
ありがとうございました
cocoa - CGLayerとCALayerの違いと互換性は何ですか?
私は混乱CGLayerしていCALayerます。それらは似ているように見えますが、なぜ別々の実装があるのですか?CGLayerとの互換性との違いは何CALayerですか?
iphone - CGContextRef を解放できません (コンテキストは CGLayer からのものです)
このようにCGLayerを作成し、コンテキストを取得すると... CGContextRef を解放することは不可能に見えますか?
CGLayerRef 自体を解放すると (明らかに) 正常に動作します。
CGLayer をリリースする直前に CGContextRef をリリースできると思うかもしれませんが、そうではありませんか? また、CGLayer を解放した直後に CGContextRef を解放することもできません。
CGContextRef を解放すると、アプリがクラッシュします。
ここで何が起こっているか知っている人はいますか?(さらに、CGContextRelease は実際には CFRelease とまったく同じであり、いくつかの nil チェックがあることに注意してください。)
実際、CGContextRef を手動で解放してはいけませんか? 誰か知っていますか?乾杯。
以下のジョエルの見事な答えについて:
CGLayerRefのリリースは正しく適切ですか? Joel は次のように指摘して
います。
iphone - CGLayerからすべてのデータをクリアするのに苦労しています-それも可能ですか?
CGLayerを繰り返し作成し、処理を行ってからリリースします。これはリアルタイムで多く発生します。確かに、毎回まったく新しいCGLayerを作成することには多くのオーバーヘッドがあります。それで...
確かに、新しいレイヤーを最初から作成するよりも、レイヤーをそのままにして、毎回すべてのデータを消去する方がよいでしょう。
注:すべてをカバーする空白または透明な長方形でペイントすると、既存のパスの上にさらに多くのデータが追加されます。
では、実際にCGLayerを「消去」または「再開」するにはどうすればよいでしょうか。
関数CGContextBeginPath(cc)がありますが、混乱を招きます。「その」パスをクリアするだけのようで、すべてのCGLayerを消去してデータなしの状態に戻すようには見えません。
CGLayerをデータのない状態に戻すにはどうすればよいですか?誰か知っている?
アップデート...
実際にはこれを行う方法はありません。
かなりの実験の結果、CGLayerからすべてのデータを消去する方法はないように思われることがわかりました(これは本当に残念です)。
新しい白い長方形または透明な長方形を追加するのはそれだけであり、実際にはさらにデータが追加されることに注意してください。
したがって、残念ながら、これを行うための既知の方法はありません。これらを高Hzで構築している場合(おそらく計算のため)、毎回新しいものから始める必要があります。または、 CGContextBeginPath()を使用して、1つのパスだけを削除する(実際にはカバーするだけでなく、実際に削除する)こともできます。
うまくいけば、これは将来誰かを助けるでしょう。
iphone - CGLayer を自動解放するにはどうすればよいですか?
CGLayers を NSMutableDictionary にキャッシュして、次のように使用します。
getLayerForCacheKeyからCGLayerRelease'ing returnedLayer を使用しないことで、ここでメモリ リークが発生していると思います。それらを自動解放できる方法はありますか?
objective-c - 編集した画像をiPhoneギャラリーに保存
バンドルから 1 つの画像を読み込んでいるアプリに取り組んでおり、クォーツの助けを借りてその画像に 2 つの赤い円を追加しています。画像は UIImageVIew クラスのインスタンスに読み込まれます。
赤い丸で画像を保存したいのですが、これまでのところ、方法は1つしか見つかりませんでした。
しかし、バンドルからのみ画像を保存しているため、機能しません。いくつかの投稿で、CALayerを使用して実行できることを読みましたが、それを行うための有用なリンクが見つかりませんでした。答えを投稿していただければ幸いですまたはそれを行うためのチュートリアルリンク。