我一直想知道用我自己的setNeedsRefresh
方法扩展UIView - 一种行为类似于setNeedsLayout
和setNeedsDisplay
的方法,但目的是刷新/重新加载数据,隐藏视图等。我的目标是:
我希望能够以这样的方式扩展UIView,你可以在任何视图上调用setNeedsRefresh
,并在重绘之前让它执行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...
}
}
这个例子是一个非常简单的例子,目的是为了更好地表达我的要求 - 我在初始问题中列出了我需要/想要这样做的原因。