問題タブ [setneedsdisplay]

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 投票する
2 に答える
980 参照

ios - setNeedsDisplayを強制する

CoreGraphicsとdrawRectを使用して歯車を描画するルーチンがあります。ボタンを使用して、ステージを介してギアを進めました。

-(IBAction)advanceButtonPressed:(id)sender {

}

歯車を描画するためのルーチンはdrawRectにあり、歯車の歯は、drawRectに渡されるステージの値に応じて新しい位置に描画されます。ボタンを押すごとに1つずつ、4つのステップで、歯車が新しい位置(円の周りの1つのセグメント)に回転します。

buttonPressedルーチンを変更して、ループ内の4つのステージを実行するようにしたので、ボタンを1回押すだけで済みますが、機能しません。

-(IBAction)buttonPressed:(id)sender {

}

私のNSLogは、前のルーチンの場合と同じように、ステージが4つの値を通過することを示しています。ただし、setNeedsDisplayは(drawRectのNSLogトレースで確認されるように)1回だけ実行されるため、ギアは最終位置に表示されますが、中間段階には表示されません。setNeedsDisplayは、ループ内にあるにもかかわらず、ボタンルーチンが終了したときにのみ実行されるようです。

強制的に実行する方法はありますか?

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

ios - iOS。NSURLConnection と UIView の setNeedsDisplay は、非同期動作のために GCD に依存していますか?

私は最近、GCD と非同期のレンダリングとデータ検索の作業をたくさん行っていますが、非同期がどのように行われるかについてのメンタル モデルをしっかりと固める必要があります。

一連のメソッドに注目したいと思いsetNeedsDisplayます。NSURLConnectionDelegate

  1. setNeedsDisplay を非同期で呼び出すのは正しいですか? 私はよくそれを呼んでdispatch_async(dispatch_get_main_queue(), ^{})混乱します。
  2. コールバックは非同期として説明されていNSURLConnectionDelegateますが、実際にはメイン スレッド/実行ループで同時に実行されるわけではありません。私はここでの区別についてはあいまいです。

より一般的には、GCD の最新の iOS 時代では、GCD を作成するためのベスト プラクティスと、これらの方法がうまく連携します。私は定期的に使用していて、トラブルに巻き込まれないように努めているため、ここで一般的なガイドラインを探しています。

乾杯、
ダグ

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

ios - setNeedsLayout と setNeedsDisplay

UIViewメソッドsetNeedsLayoutとの本当の違いは何setNeedsDisplayですか?

いつものように、ドキュメントはこれについて曖昧です。

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

objective-c - 画像を非同期に取得し、setNeedsDisplay を設定する

このコードは、カスタム セルの要素を設定するセル初期化ルーチンにあります。Web から画像を非同期的に取得します。しかし、完了したら再描画する必要があります。

これは私のコードスニペットです:

ただし、UIImageView は再描画されません。セル全体も再描画しようとしましたが、それもうまくいきません。あなたの助けに感謝します。私はしばらくの間、これを修正しようとしてきました!

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

objective-c - テーブルビューでのSetNeedsDisplay

私の問題は、すべてのセルがレンダリングされた画像として正しいUIViewで正しく初期化されるわけではないことです。(以下のコードを参照)iphone 4では、網膜ディスプレイを備えたiphoneの同じセルが常に他のセルでもあります。この設定では、setNeedsDisplayは機能しません。IBoutletで同じ構造を使用すると、機能します。!一部のセルではimage-files.pngを使用する必要があり、他の一部のセルでは、drawrect以上を使用する定義済みの描画メソッドを使用する必要があります。setNeedsDisplayメソッドを使用する必要があります。

何が問題なのですか!!!

私のコード

tableview...セル

0 投票する
2 に答える
1733 参照

ios - drawRect で UIView backgroundColor を設定します。

カスタム UIView クラスの背景色を設定しようとしています。drawRect:このクラスはメソッド内でクオーツ描画も行います。

背景色の変更はビューの次の再描画まで行われないため、backgroundColor呼び出す前に UIView のプロパティを変更しsetNeedsDisplayます。UIActivityIndicatorViewビューの再描画中にアニメーション化するように設定しました。

インジケータは の最後で停止しsetNeedsDisplayます。theColorこれを呼び出す必要があるたびに変更されます。

setNeedsDisplay時間のかかるプロセスがあるとしましょう。背景を設定し、インジケーターのアニメーションを維持したいと思います。現在、backgroundColor呼び出しを変更していますsetNeedsDisplayが、メソッドが実行されるまで backgroundColor は変更されませんperformSelectorInBackground! したがって、アプリがハングし、インジケーターがアニメーション化されません。この順序付けの問題をどのように処理すればよいですか? ありがとう。

編集:drawrect:時間がかかるかもしれないという意味でした。

0 投票する
2 に答える
3017 参照

ios - ビューを再描画するためにdrawRectをトリガーするボタン

サブビュー付きのVCがあります。私にはsubview levelボタンがあります。ボタンでビューが更新されるようにしたい。

IBActionコードはVCにあります。BOOL現在、値を切り替えるだけです。

サブビューに戻るdrawRect:メソッドは、をテストし、BOOLそれに応じてビューを変更するコードです。

私の観察では、ボタンが押されると、IBActionコードが実行され、が切り替えられますBOOLが、drawRect:メソッドは呼び出されません。

drawRectを手動で呼び出してみました(良い習慣ではなく、機能しませんでした)。setNeedsDisplayを呼び出してみましたが、それも機能しませんでした(プログラムで作成されたサブビューを参照する方法がわかりませんでした)。

提案を歓迎します。

IBActionコードは簡単ですが、以下に含まれています。

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

objective-c - drawRect と setNeedsDisplayInRect で最小限に描画

彼、[self setNeedsDisplayInRect:(dRect)] がすべて (必要なものだけでなく) を描画し、"dRect" で画面を更新することに気付きました。そこで、次のように drawRect メソッドを編集し始めました。

次に、表示が必要なメソッドに「gUs」を変更させます。それは正常に機能し、多くのコントロールがあるため、CPU の作業が大幅に削減されます。

しかし、その後、負荷が高い場合やディスプレイの更新が頻繁に行われる場合、前の呼び出しからの needDisplay が処理される前に別のメソッドが「gUs」を変更し、間違った描画につながることがあることがわかりました。

どうすればこれを回避できますか?

0 投票する
2 に答える
743 参照

ios - UIView setNeedsDisplay が機能しない

簡単なコードは次のとおりです。

カスタム MyButton.h

カスタム MyButton.m

カスタム MyView.h:

カスタム MyView.m:

ViewController.m:

ボタンを押してもイメージビューが変わりません。どうすればこれを修正できますか? どうもありがとうございました!

0 投票する
2 に答える
1323 参照

iphone - setNeedsDisplay は 1 回だけ呼び出されます

私のコードでは、線の描画の遅延を「アニメーション化」したいので、ビューに新しい線を追加した後、setNeedsDisplay を呼び出します。これは 1 回で問題なく動作します。

drawRect メソッド内で線を描画し、線のメソッドを呼び出して線の長さをインクリメントします。今度は setNeedsDisplay をもう一度呼び出して線を再描画したいので、「成長」のアニメーションを取得します..

しかし、別の行を追加しない限り、setNeedsDisplay は 1 回だけ呼び出され、二度と呼び出されません。また、setNeedsDisplay を呼び出すこのクラスのメソッドを呼び出して、drawRect 内で呼び出すことができないようにしようとしました。

_linesは、GameLine オブジェクト (非アトミック、保持) プロパティを持つ NSMutableArray です。