問題タブ [drawrect]
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 - iphoneピンチズーム
ビューの drawRect 関数でいくつかの図形を描画しました。これらの図形の色は、drawRect を呼び出す setNeedsDisplay を使用してしばらくすると色が変わります。次に、タップすると図形名も選択されます。今まではすべて正常に動作します。
上記のように描画された複数の形状を持つビューが 3 つあります。これらのビューはすべてスクロール ビューに追加されるため、ユーザーは次のビューで形状を表示できます。
ここで必要なのは、図形を含むビューをピンチ ズームすることです。また、図形を選択する必要があります。drawRect が繰り返し呼び出されます。私が見たすべてのピンチズームは画像に関連しています。
iphone - UIImage を描画する方法、または -drawRect: で直接描画する方法は?
にUIImage描きたい がありUIViewます。しかし、作成してこれをサブビューとして追加する代わりに、UIView を直接UIImageView上書きして描画したいと考えています。-drawRect:
たとえば、私のコードは次のようになります。
iphone - iPhoneのカスタム描画 UITableViewCell 、Webから画像をロードしてスレッドに挿入する方法は?
私はカスタムテーブルセルを描画してきました(Appleのサンプルをベースとして使用)が、URLから画像を表示するセルを作成する必要が生じました-各セルには異なる画像があります(あるデータに基づいて) )しかし、すべてのセルは同じであるため、同じ再利用IDです。
これを行うための正しい構造は何ですか? 明らかに、新しいスレッドに画像をロードする必要があります。これまでのところ、独自のスレッドで実行されるセルビュークラスに次の関数があります。
これを drawRect 関数自体から呼び出すと (これは悪いことです)、「動作」しますが、これは明らかに何かが発生するたびに呼び出されます (選択など)。それをセルの uiview の init 関数に入れると、最初の 8 つのセルに対してのみ呼び出され、その後再利用されます。他のバリエーションでは、セルが再利用されたときに画像が「リセット」されないため、同じ 8 つの画像がテーブルの下に繰り返されます (ただし、他のテキストは更新されます)。
今のところキャッシュについて心配していませんが、これを行う方法のサンプルはありますか、誰かが私を正しい方向に向けることができますか? ありがとう。
objective-c - スクロールでNSCollectionViewを再描画すると、グラフィックが分割されます
NSCollectionViewウィンドウをスクロールすると、が視覚的にNSCollectionViewItem壊れてしまうという小さな刺激があります。
分割の速度は、スクロールの速度によって異なります。たとえば、ゆっくりスクロールすると、分裂がより頻繁に発生します。高速スクロールはそれほど多くありません。問題は、NSCollectionViewItem私が使用しているカスタムNSViewが表示可能なフレームの境界を越える場合にあるようです。
私のNSView(のカスタムビューNSCollectionViewItem)には、非常に単純な描画アルゴリズムがあります。複雑すぎることはありません。
基本的に、drawRectメソッドのdirtyRect内にフレームを作成し、その中にいくつかのフレームを作成します。
コードの前後でフォーカスをロックして解放し、グラフィックスコンテキストを設定して復元しようとしましたが、いずれも問題を解決していないようです。
私はSnowLeopardを使用していますが、それが違いを生むとは思いません。
ソリューションの更新
ここに興味のある人は、NSResponderが推奨する問題の解決策です。私は、指摘されたように、間違ったことを行う方法にmOuterFrame基づいてイニシャルを作成していました。からのクイックチェンジ:drawRect:dirtyRect
0ベースの起点へ:
上記のコード変更はそれ自体で問題を解決するのに十分でしたが、提案されたように、私は長方形のみを使用しているので、コードの効率も微調整しました。2ピクセルの線を取得するには、変更を追加する必要がありました。新しい方法:
uiviewcontroller - drawRect をどこに配置しますか?
IPhone の描画手順を学習し始めたばかりですが、何か混乱しています。新しいビューベースのアプリケーションを開始し、新しいビュー クラスを確立し、それをアプリケーションに付属のビューに関連付けると、その新しいビュー クラスに配置された drawRect が機能するように見えます。
しかし、ビューのビュー コントローラーで描画ルーチンを直接確立できないのはなぜですか。
助けてくれてありがとう。
ジョン・ドナー
iphone - iPhone + UIView。drawRect 中の大量のメモリ消費。これを減らすための戦略はありますか?
私のデータ視覚化アプリでは、再描画中に大きなメモリ消費スパイクが発生します (drawRect をトリガーする setNeedsDisplay)。現在、データ プロットを格納するビュー全体を再描画しています。このビューは、デバイスのディスプレイよりもはるかに大きくなっています。
現在の素朴なアプローチではなく、CoreGraphics に各要素を描画するのに十分なメモリを割り当て (各要素はデバイスの表示よりもはるかに小さい小さな長方形のブロックです)、完了したらメモリを解放するように指示する方法はありますか?
前もって感謝します。
-ダグ
更新 12 月 8 日午前 8 時 28 分 EST
関連するコードと説明文を次に示します。ObjectAlloc、Memory Monitor、および Leaks インストゥルメントを実行しているインストゥルメントを実行しています。私が持っている唯一のメモリリークは、NSOperationQueueがメモリを解放していないことに関係しています。これはマイナーであり、関連性はありません。
アーキテクチャ的には、このアプリは、検査するヒトゲノムに沿った興味深い場所のリストを含む tableView で構成されています。テーブルの行が選択されたら、alignmentData というデータを返すデータ収集操作をキューに入れます。このデータは、水平の長方形のスラブとしてプロットされます。
最初に、tableView を起動したときのメモリ フットプリントは 5 MB です。
注: viewWillAppear: が呼び出された後、メモリ フットプリントは変化していません。にもかかわらず、alignmentView のサイズはディスプレイのサイズをはるかに超えています。
これは、データ収集操作から呼び出されるメソッドです。
このコード行の後:
メモリ使用量は 13.8 MB
このコード行の後:
メモリ フットプリントが 21.5 MB に急増し、そこに数秒間留まり、その後、既存の 13.8 MB のレベルに戻ります。
私が探しているソリューションでは、基本的に、整列オブジェクトの 1 行の高さである水平レンダー バッファー ウィンドウを作成できます。そのメモリ レンダーを割り当ててから破棄します。アライメント データの行ごとに、これを何度も繰り返します。
理論的には、このアプローチを使用して無限の量のデータをレンダリングできますが、これはもちろん最も優れた方法です ;-)。
-ダグ
iphone - 「コンテナ」UIViewにCALayerを持たないようにするにはどうすればよいですか?
ビジュアライゼーションでメモリ消費を節約しようとしています。いくつかの子ビューを含む containerView を持つ scrollView があります。scrollViewとcontainerViewのCALayerをなくしたいと思います。そのため、子ビューだけが再描画中にメモリを消費します。
どうすればいいですか?
ありがとう、ダグ
iphone - iPhone クォーツ。ビットマップではなくパスを使用してマットを作成するにはどうすればよいですか?
私が書いている視覚化アプリでは、パスで作成されたマットを使用してグラフィックを形作りたいと考えています。グラフィックは、さまざまな形状が描かれた水平の長方形のストリップです。この長方形のストリップの上に、長方形のストリップを形成するマットとして機能する楕円を描画して、楕円内に描画されているように見せたいと思います。どうすればいいですか?
この単純化された例では、さまざまなブレンド モードを使用してその上に楕円を描画することで、背景の青い四角形を青い楕円として表示しようとしていますが、失敗しています。
ありがとう、ダグ
更新: 解決策 簡単に言うと: クリッピング パス。ドゥー!次のコード スニペットは、私が求めている効果を作成します。これは、赤い背景に対する青い楕円です。青い楕円は、青い四角形を楕円の形状に拘束することによって作成されることに注意してください。これが必要です。涼しい。
これが他の誰かに役立つことを願っています。クリッピング パスは非常に強力です。乾杯。
apache-flex - FlexCanvasに正方形を描く
FlexCanvas上の正方形のアニメーション画像にコードを書き込もうとしています。以下のコードは徐々に遅くなるため、何か問題があります。古い四角か何かを片付けることになっていると思います。
私は以下で何を間違っていますか?:
iphone - drawRectまたは再利用セルメソッドの静的画像?
再利用されたセルに静的画像を追加するか、drawrect メソッドを使用してセルに描画するかをテストしていました。私は両方の方法をテストしましたが、セルが表示されるたびに画像を描画する方が、再利用されたセルに画像を追加するよりも高速であるようです。
誰が知っていますか、これはどのように可能ですか?さらに 2 つの静的イメージがあります。これらを drawrect で描画するか、再利用されたセルに追加する必要がありますか?
ありがとう!