問題タブ [catiledlayer]

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.

0 投票する
1 に答える
984 参照

ios - CATiledLayer の動的タイルの生成

スクロールビューと CAtiledLayers を使用するための WDC2010 セッション 104 を見てきましたが、これはすべて非常に優れています。しかし、タイル画像の生成についてはよくわかりません。この例では、カエルのタイルの写真が既に作成されています。しかし、自分で写真を撮る写真アプリを持っている場合、自分でタイルを作成する必要があり、最善の方法がわかりません。

最も簡単な方法は、写真を撮って保存したらすぐに画像を操作して、必要なすべてのタイルを作成することです。しかし、それはすべての写真に対して、より多くのファイルを保存し、より多くのファイル スペースを使用していることを意味します。

写真が必要になる直前に、一時ディレクトリにタイルを作成します。表示部分が終了したら、その一時ディレクトリを削除できます。少なくとも、写真を表示するときは余分なファイル スペースしか使用していません。しかし、画像を読み込んでタイルを作成する際に、ユーザーが気付くような遅延が発生するかどうかは心配です。

0 投票する
1 に答える
1849 参照

ipad - CATiledLayer drawLayer:inContext: 描画する画像の取得中にビューの割り当てが解除されるとクラッシュする

CATiledLayer がバックグラウンド スレッドで描画する画像を取得しているときに ViewController の割り当てが解除されると、アプリがクラッシュします。メッセージが届きます

とデバッガーが表示されます

ここで、MyViewController の特定のインスタンスを解放したいと思います。もう必要ないからです。しかし、バックグラウンド スレッドから戻ったときにクラッシュしないようにするにはどうすればよいでしょうか。

0 投票する
0 に答える
892 参照

iphone - UIScrollView と CATiledLayer の問題

私は PhotoScroller という名前のサンプル コード (Apple の WWDC 2010 の例) に取り組んでいます。ズーム時にカスタム UIView を返す UIScrollView
があります

この imageView のレイヤーはCATiledLayerです。
私の問題は、ズームごとに imageView の drawRect が呼び出されることです (基本的なズームでは 10 回または 30 回)。そして、すべての画面を更新します(実際には drawrect に指定されたサイズです)。画面全体ではなく、ズームが発生したときに UIImageView の一部
を更新したいと思います (setNeedDisplay の代わりに setNeedDisplayInRect: を使用します)。 しかし、この更新メソッドの呼び出しを回避して if else を実行し、imageView の一部を更新する方法がわかりません。

UIScrollView とサブクラス化された uiview (catiledlayer を使用) の間に別の UIView を追加しようとしました。しかし、サブビューが更新されないようにする方法がわかりません:-/

誰かがアイデアを持っているなら、それは非常に役に立ちます!

ありがとう:-)
ヴィンセント

0 投票する
1 に答える
879 参照

iphone - iPhone 4 で CATiledLayer を描画すると、あいまいなピクセルがまたがる

次のコードを使用して、CATiledLayer で線を描画しています。

私が得るのは、この4pxのぼやけた線です:

http://img837.imageshack.us/img837/5002/fuzzyline.png

CATiledLayer を CALayer に変更すると、予想どおり線がシャープになり、幅が 2px になります。この動作は iPhone 4 でのみ発生します。3GS では、CALayer と CAtiledLayer の両方で線がはっきりしています。もちろん、3GS では線の太さは 1px です。

この動作を克服する方法を考えてください。

0 投票する
1 に答える
3996 参照

iphone - CATiledLayer:サンプルコード

UIImageViewに高解像度の画像をロードする必要があります。アプローチを経た後、より高い解像度の画像をロードすると、メモリ使用量が膨大になります[幅*高さ* 4]したがって、これを克服するには、CATiledLayerを実装してより高い画像をサポートする必要があります。PhotoScrollerアプリを紹介しましたが、リソースからの画像を使用しているため、フォトライブラリからそれらの画像を選択する必要があります。

誰かがこれについて私を助けてくれますか、このアルゴリズムを実装する方法。リンクまたは参照が適用されます。

ありがとう、

サーガル

0 投票する
0 に答える
627 参照

iphone - CATiledLayer でズームインしているときに、変換されていないコンテキストを描画する方法は?

データの視覚化に CATiledLayer を使用しています。デフォルトでは、drawLayer 関数は、転置およびスケーリングされたコンテキストを取得します。これにより、描画コードはズームレベルと要求されているタイルに依存しなくなります。
ただし、ズーム機能を使用して、実際のズームを行わずにデータの水平範囲を変更したいと考えています。

これまでのところ、次のコードを取得しました。

これは機能しますが、ズームインすると要素がぼやけるという欠点があります (画面上の各ピクセルに対して 1/zoomfactor ピクセルのみがレンダリングされます)
。このぼやけを防ぐ方法はありますか?
または、転置されたコンテキストではなく、変換されていないコンテキストに描画する方法はありますか?

0 投票する
4 に答える
2159 参照

ios - 関連付けられたビューがなくなった後に呼び出される CATiledLayer drawInContext

今日、CATiledLayer に関する興味深い iOS の問題に遭遇しました。これはデバイス上でのみ発生し、シミュレーターでは発生しませんでした。

私のビューは、drawLayer: inContext: デリゲート コールバックを介してその CALayer を描画します。このレイヤーには CATiledLayer から派生したサブレイヤーがあり、オーバーライドされた drawInContext: メソッドで独自の描画を行います。

どちらのレイヤーも、CGContextDrawPDFPage() を介して pdf コンテンツをレンダリングしています。(CALayer は低解像度バージョンを描画し、CATiledLayer サブレイヤーはその上に高解像度コンテンツを描画します。)

私はビューを使い果たし、スーパービューからビューを削除して解放するというシナリオに遭遇しました。ビューで dealloc() が呼び出されます。しばらくして、CATiledLayer の drawInContext: メソッドがシステムによって (バックグラウンド スレッドで) 呼び出されます。それは描画しますが、Springboard メソッドから戻るとクラッシュし、その際にアプリもダウンします。

ビューの dealloc メソッドから、CATiledLayer にフラグを設定して、これ以上レンダリングしないように指示することで修正しました。

しかし、もっとエレガントな方法があるとしか想像できません。CATiledLayer drawInContext: メソッドがまだ親レイヤーの後に呼び出され、親レイヤーのビューの割り当てが解除されたのはなぜですか? これが起こらないようにビューをシャットダウンする正しい方法は何ですか?

0 投票する
1 に答える
8618 参照

iphone - CoreGraphicsCGContextDrawImageを使用したCATiledLayerでの描画

iPhone OS 3.1.3でCATiledLayerを使用したいのですが、これを行うには、すべての描画-(void)drawLayer:(CALayer *)layer inContext:(CGContext)contextをコアグラフィックのみで行う必要があります。

今、私はiPhoneの反転座標系の問題に遭遇し、変換を使用してそれを修正する方法についていくつかの提案があります。

私の問題は、それを機能させることができないということです。PhotoScrollerのサンプルコードを使い始め、描画メソッドをコアグラフィックス呼び出しのみに置き換えました。こんな感じ

}

ご覧のとおり、座標系を反転するためにスケール変換を使用し、原点を左下隅にシフトするために平行移動変換を使用しています。画像は正しく描画されますが、タイルの最初の行のみが描画されています。平行移動やタイルの座標の計算方法に問題があると思います。

これはどのように見えるかです:

私はこのすべての変換に少し混乱しています。

ボーナスの質問:コアグラフィックスのRetinaディスプレイ画像をどのように処理しますか?

編集: Retinaディスプレイで動作させるために、サンプルコードから元の方法を使用して画像を提供しました。

Core Graphicsはポイントではなくピクセルで動作するため、原則として表示のスケールは無視されます。したがって、より多くのピクセルを描画するように求められると、より多くのCATiledLayer(またはサブレイヤー)が画面全体に使用されます。

たくさんありがとうトーマス

0 投票する
1 に答える
878 参照

iphone - 印刷されたCMYK画像をiPhone用のタイル状のRGB画像に変換しますか?

Xcode PhotoScrollerアプリ(iPhoneのネイティブフォトビューアーアプリなど)などのiPhoneアプリで表示するために、元々は印刷された雑誌用に作成された高解像度の画像がいくつか与えられました。私はそれらを1024x1536 pxにダウンサイジングし、とで使用するためにそれらをスライスしUIScrollViewますCATiledLayer

  1. サイズを変更するときに、CMYKからRGBに変換する必要がありますか?

    RGBはデジタル用だからそう思いますよね?しかし、iPhoneではCMYKとしても問題なく見えました。なぜ彼らはデジタルにRGBを使用すると言うのですか?

  2. それらを1/2と1/4にサイズ変更し、3つのサイズすべてをスライスするための最良の方法は何ですか?

    1024/4 = 256なので、すべてのタイル(エッジタイルを除く)を256x256ピクセルにすることを考えています。うまくいったタイルカッターを試してみましたが、画像が20枚あるので、20回やらなければなりません。さらに、レベルを深くすることはできないので、PhotoShopで各画像のサイズを2回変更する必要があります。つまり、TheCutterを実行する必要がある60枚の画像です。それほど長くはかからないはずですが、これをもう一度やり直す可能性が高いので、より良い解決策が必要です。理想的には、iPhoneでこれを行うのはクールですが、今のところ、より良いオプションを提案しない限り、PaulAlexanderのTileRubyスクリプトを使用すると思います。Zoomifyも試してみるかもしれません。

0 投票する
1 に答える
292 参照

iphone - CATiledLayer でビューを正しくアニメーション化できません

CATiledLayer を持つ UIView はアニメーションを持つことができますか?

私が以下を呼び出すと:

CGContextRef コンテキスト = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationTransition: UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:10]; [UIView commitAnimations];

これは、UIView が CATiledLayer のない「通常の」UIView である場合にうまく機能します。ただし、タイプ CATiledLayer のサブレイヤーを追加するとすぐに、アニメーションが正しく機能しません。ページめくりは機能しますが、アニメーションが終了するまで下のページは表示されません (空白のみ)。

[myContentView setNeedsDisplay] を試しました。アニメーションブロックの前、後、途中でも。myContentView に CATiledLayer がある場合でも違いはありません。

どんな助けでも感謝します。