我一直想知道用setNeedsRefresh
我自己的一种方法扩展 UIView - 一种行为类似于setNeedsLayout
但setNeedsDisplay
目的是刷新/重新加载可见数据、隐藏视图等的方法。我的目标是:
- 能够将方法(尤其是 setter)从必须立即刷新视图中分离出来。
- 能够标记视图以进行刷新,而不是手动刷新它(以优化代码执行并拥有更清晰的代码架构)。
我希望能够以一种可以调用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...
}
}
这个例子是一个非常简单的例子,目的是为了更好地表达我的要求——我需要/想要这样做的原因列在我最初的问题中。