私はUIViewをsetNeedsRefresh
私自身の一種の方法で拡張することについて疑問に思っていました.andのように動作する方法ですがsetNeedsLayout
、setNeedsDisplay
表示データの更新/再読み込み、ビューの非表示などを目的としています。私の目標は次のとおりです。
- ビューを即座に更新する必要がないように、メソッド (特にセッター) を切り離すことができます。
- ビューを手動で更新するのではなく、更新のフラグを立てることができます (コードの実行を最適化し、コード アーキテクチャをよりクリーンにするため)。
setNeedsRefresh
任意のビューを呼び出すことができるように UIView を拡張し、refreshView
再描画が発生する前にそれを実行するか、同様のメソッドを実行できるようにしたいと考えていました。
PS: setNeedsLayout
+ 更新フラグを使用してこれを処理する最良の方法はありますか?
更新 #1:以下は、私ができるようにしたいことの例です。
-(void)setAvailableForPurchase:(BOOL)availableForPurchase
{
if (_availableForPurchase != availableForPurchase)
{
_availableForPurchase = availableForPurchase;
[self setNeedsRefresh];
}
}
その後:
-(void)refreshView
{
if (self.isAvailableForPurchase)
{
self.someView.image = someImage;
self.someButton.enabled = yes;
// more code, changes several objects
}
else
{
// some other code...
}
}
この例は、私の要件をよりよく表現するために意図的に非常に単純なものです。これを行う必要がある/したい理由は、最初の質問に記載されています。