問題タブ [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.
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は、ループ内にあるにもかかわらず、ボタンルーチンが終了したときにのみ実行されるようです。
強制的に実行する方法はありますか?
ios - iOS。NSURLConnection と UIView の setNeedsDisplay は、非同期動作のために GCD に依存していますか?
私は最近、GCD と非同期のレンダリングとデータ検索の作業をたくさん行っていますが、非同期がどのように行われるかについてのメンタル モデルをしっかりと固める必要があります。
一連のメソッドに注目したいと思いsetNeedsDisplay
ます。NSURLConnectionDelegate
- setNeedsDisplay を非同期で呼び出すのは正しいですか? 私はよくそれを呼んで
dispatch_async(dispatch_get_main_queue(), ^{})
混乱します。 - コールバックは非同期として説明されてい
NSURLConnectionDelegate
ますが、実際にはメイン スレッド/実行ループで同時に実行されるわけではありません。私はここでの区別についてはあいまいです。
より一般的には、GCD の最新の iOS 時代では、GCD を作成するためのベスト プラクティスと、これらの方法がうまく連携します。私は定期的に使用していて、トラブルに巻き込まれないように努めているため、ここで一般的なガイドラインを探しています。
乾杯、
ダグ
ios - setNeedsLayout と setNeedsDisplay
UIView
メソッドsetNeedsLayout
との本当の違いは何setNeedsDisplay
ですか?
いつものように、ドキュメントはこれについて曖昧です。
objective-c - 画像を非同期に取得し、setNeedsDisplay を設定する
このコードは、カスタム セルの要素を設定するセル初期化ルーチンにあります。Web から画像を非同期的に取得します。しかし、完了したら再描画する必要があります。
これは私のコードスニペットです:
ただし、UIImageView は再描画されません。セル全体も再描画しようとしましたが、それもうまくいきません。あなたの助けに感謝します。私はしばらくの間、これを修正しようとしてきました!
objective-c - テーブルビューでのSetNeedsDisplay
私の問題は、すべてのセルがレンダリングされた画像として正しいUIViewで正しく初期化されるわけではないことです。(以下のコードを参照)iphone 4では、網膜ディスプレイを備えたiphoneの同じセルが常に他のセルでもあります。この設定では、setNeedsDisplayは機能しません。IBoutletで同じ構造を使用すると、機能します。!一部のセルではimage-files.pngを使用する必要があり、他の一部のセルでは、drawrect以上を使用する定義済みの描画メソッドを使用する必要があります。setNeedsDisplayメソッドを使用する必要があります。
何が問題なのですか!!!
私のコード
tableview...セル
ios - drawRect で UIView backgroundColor を設定します。
カスタム UIView クラスの背景色を設定しようとしています。drawRect:
このクラスはメソッド内でクオーツ描画も行います。
背景色の変更はビューの次の再描画まで行われないため、backgroundColor
呼び出す前に UIView のプロパティを変更しsetNeedsDisplay
ます。UIActivityIndicatorView
ビューの再描画中にアニメーション化するように設定しました。
インジケータは の最後で停止しsetNeedsDisplay
ます。theColor
これを呼び出す必要があるたびに変更されます。
setNeedsDisplay
時間のかかるプロセスがあるとしましょう。背景を設定し、インジケーターのアニメーションを維持したいと思います。現在、backgroundColor
呼び出しを変更していますsetNeedsDisplay
が、メソッドが実行されるまで backgroundColor は変更されませんperformSelectorInBackground
! したがって、アプリがハングし、インジケーターがアニメーション化されません。この順序付けの問題をどのように処理すればよいですか? ありがとう。
編集:drawrect:
時間がかかるかもしれないという意味でした。
ios - ビューを再描画するためにdrawRectをトリガーするボタン
サブビュー付きのVCがあります。私にはsubview level
ボタンがあります。ボタンでビューが更新されるようにしたい。
IBAction
コードはVCにあります。BOOL
現在、値を切り替えるだけです。
サブビューに戻るdrawRect:メソッドは、をテストし、BOOL
それに応じてビューを変更するコードです。
私の観察では、ボタンが押されると、IBActionコードが実行され、が切り替えられますBOOL
が、drawRect:
メソッドは呼び出されません。
drawRectを手動で呼び出してみました(良い習慣ではなく、機能しませんでした)。setNeedsDisplayを呼び出してみましたが、それも機能しませんでした(プログラムで作成されたサブビューを参照する方法がわかりませんでした)。
提案を歓迎します。
IBActionコードは簡単ですが、以下に含まれています。
objective-c - drawRect と setNeedsDisplayInRect で最小限に描画
彼、[self setNeedsDisplayInRect:(dRect)] がすべて (必要なものだけでなく) を描画し、"dRect" で画面を更新することに気付きました。そこで、次のように drawRect メソッドを編集し始めました。
次に、表示が必要なメソッドに「gUs」を変更させます。それは正常に機能し、多くのコントロールがあるため、CPU の作業が大幅に削減されます。
しかし、その後、負荷が高い場合やディスプレイの更新が頻繁に行われる場合、前の呼び出しからの needDisplay が処理される前に別のメソッドが「gUs」を変更し、間違った描画につながることがあることがわかりました。
どうすればこれを回避できますか?
ios - UIView setNeedsDisplay が機能しない
簡単なコードは次のとおりです。
カスタム MyButton.h
カスタム MyButton.m
カスタム MyView.h:
カスタム MyView.m:
ViewController.m:
ボタンを押してもイメージビューが変わりません。どうすればこれを修正できますか? どうもありがとうございました!
iphone - setNeedsDisplay は 1 回だけ呼び出されます
私のコードでは、線の描画の遅延を「アニメーション化」したいので、ビューに新しい線を追加した後、setNeedsDisplay を呼び出します。これは 1 回で問題なく動作します。
drawRect メソッド内で線を描画し、線のメソッドを呼び出して線の長さをインクリメントします。今度は setNeedsDisplay をもう一度呼び出して線を再描画したいので、「成長」のアニメーションを取得します..
しかし、別の行を追加しない限り、setNeedsDisplay は 1 回だけ呼び出され、二度と呼び出されません。また、setNeedsDisplay を呼び出すこのクラスのメソッドを呼び出して、drawRect 内で呼び出すことができないようにしようとしました。
_linesは、GameLine オブジェクト (非アトミック、保持) プロパティを持つ NSMutableArray です。