問題タブ [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 投票する
1 に答える
3214 参照

iphone - UIView setNeedsDisplayメインスレッドにありませんか?

私のiPhoneアプリケーションには、バックグラウンドでタスクを実行するために作成したセカンダリスレッドがあり、数ミリ秒ごとに、ビューを更新する必要があります(メインスレッドからではありません)。UIViewサブクラスで次のコードを試しました。

これはシミュレーターではうまく機能しますが、私のデバイスでは非常に遅くなります。私が考えることができる唯一のことは、メインスレッドがUIKitの通常のルーチンで行き詰まっていることです。つまり、setNeedsDisplayは、想定されている時間よりもかなり遅れて呼び出されます(約1/2秒後)。これは、他のコードでは、ユーザーの操作に基づいて、すぐにsetNeedsDisplayを呼び出し、ラグなしで正常に動作するためだと思います。セカンダリスレッドでは、ユーザーインターフェイススレッドよりもバックエンドの計算が少なくなります。これは私のアプリケーションでいくつかの非常に悪い視覚効果につながります。

要約すると、この問題を解決するにはどうすればよいですか?


アップデート:

1秒間にx回更新する必要があるビューを通知する別の方法はありますか?それが可能であれば、それは私にとってより良いパフォーマンスになる可能性があります。CADisplayLinkを試しましたが成功しませんでした...

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

uiscrollview - UIScrollView で drawRect を使用するとスクロールが遅くなる

その中に(カスタム)UIViewを含むUIScrollViewがあります。

私のscrollViewDidScroll-methodで私が呼んでいる

これにより、カスタム UIView で drawRect: メソッドを実装している場合、たとえそれが完全に空であっても、スクロールが著しく遅くなります。

drawRect: メソッドを削除するとすぐに、再びスムーズになります。

まったくわからないのですが、どうして... 誰かいますか?

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

iphone - UIViewはリアルタイムで再描画を強制します(描画アプリ)

お絵描きアプリやってます。ストロークをポイントとして収集し、それらのポイントを UIView サブクラスの drawRect メソッドに描画します。

touchesBegantouchesMovedおよびをオーバーライドしてポイントを収集しますtouchesEnded。これらすべてのメソッドで[self setNeedsDisplay]、私が呼び出し、ストロークがリアルタイムで表示されることを期待しています...実際には、drawRect メソッドは後でのみ呼び出されます。touchesEnded

ビューを単に破棄されたものとしてマークする方法が必要ですが、システムにdrawRect呼び出しを強制的に実行させる必要があります。

何か案が ?

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

objective-c - setNeedsDisplay リリース サブビュー?

カスタム ビューが条件に基づいてそれ自体に複数のサブビューを追加しif、後でsetNeedsDisplay条件がなくなったこのビューで が呼び出されtrue、したがってこれらのサブビューが作成されない場合、「古い」サブビューは、drawRect?

または、サブビューの存在を確認して解放することについて心配する必要がありsetNeedsDisplayますか?

最終的に私の質問は、メモリsetNeedsDisplayから古いビューとそのサブビューを効果的に削除し、本質的にビューを最初から再作成する場合、のメモリへの影響についてだと思いますか?

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

iphone - iPhone SDK UIView の drawRect と向きの変更

私はこのコードを書きました... plotView は drawRect メソッドによってプログラムで描画されます...問題は、デバイスの向きを変更したときです...すべてのビューが適切にスケーリングされません...自動サイズ変更マスクの問題は何ですか? setNeedsDisplay などで遊ぶ必要がありますか?

前もって感謝します!

}

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

iphone - iphone-SetNeedsDisplayが機能しない

このコードでメインビューを更新しようとしています。正しいサブビューが表示されますが、他のビューはすでに表示されています。すでにsetNeedsDisplayとsetNeedsLayoutを試しましたが、成功しませんでした。

何か案は?

コード:

よろしく!

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

graphics - OS X で必要なときに drawRect が呼び出されない

NSView のサブクラスを使用するウィンドウを使用しています。その一部はプログラムの開始時に描画され、ユーザーが別のウィンドウのボタンをクリックしたときに別の部分を描画する必要があります。他のウィンドウのコードは、問題なく NSView のサブクラスを呼び出し、新しいグラフィックを作成してから戻ります。ただし、新しいグラフィックで更新する必要があるウィンドウは変更されません。

最初の drawRect 呼び出しで最初のグラフィックスと後で描画されるグラフィックスの両方を配置すると、すべてが問題なく描画されます。ただし、ユーザーが 2 番目のウィンドウのボタンをクリックしても、drawRect は呼び出されません。私はawakeFromNib、setNeedsDisplay、needsDisplay、およびdisplayを試しましたが、これまでのところ、NSViewウィンドウでdrawRectを呼び出すものは何も見つかりませんでした。

私は OS X プログラミングにかなり慣れていないので、私のやり方で投げてくれるヒントをいただければ幸いです。

ありがとう、トム・ジェフリーズ

0 投票する
3 に答える
3708 参照

ios - iOS:子UIViewControllerをポップした後にUIViewControllerを「更新」する方法は?

私のアプリでは、UINavigationControllerを使用しています。スタックで実行されている「親」UIViewControllerと「子」UIViewControllerがあります。ユーザーは、後で親に影響を与えると想定される子に対していくつかの設定を行うことができます。NSUserDefaultsを使用してデータを保存および取得しましたが、NSLogによると正常に機能しているようです。

私がはっきりしていないのは、子供から戻ってきたら、どのようにデータを「更新」するのかということです。

具体的に説明します。子には、popViewControllerAnimatedを実行する[戻る]ボタンがあり、親に戻ります。viewDidLoadにあるすべてのメソッドを再実行して、NSUserDefaultsデータから取得した変更で親ビューフィールドが設定されるようにします。

  1. 親メソッドのどこで、ビューに「更新」するように指示する必要がありますか?
  2. この更新アクションを実行するにはどうすればよいですか?viewDidLoadをもう一度呼び出す必要がありますか?setNeedsDisplayと呼ばれるものについて読みましたが、それを使用する必要がある場合、構文は何ですか( "[self .view setNeedsDisplay]"または他の何か)?

誰かが指示して詳しく説明できますか?

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

uiview - 基になるサブビューの CATiledLayer 再描画

UIViewController のビューのサブビューとして、2 つのサブクラス化された UIView があります。最初の UIView にはレイヤー クラスとして CATiledLayer があります。そして、背景に配置しました。最初の上に配置された 2 番目の UIView。CATiledLayerでUIViewを再描画したい。[myView.layer setNeedsDisplay] を呼び出そうとしましたが、機能しません。

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

ios - setNeedsDisplay はすぐに有効になりますか、それとも後でキューに入れられるだけですか?

setNeedsDisplayすぐにdrawRect呼び出して画面をすぐに更新するかどうかを知っている人はいますか? それとも、単にキューに入れられたリクエストですか? ありがとう。