0

我一直想知道用setNeedsRefresh我自己的一种方法扩展 UIView - 一种行为类似于setNeedsLayoutsetNeedsDisplay目的是刷新/重新加载可见数据、隐藏视图等的方法。我的目标是:

  1. 能够将方法(尤其是 setter)从必须立即刷新视图中分离出来。
  2. 能够标记视图以进行刷新,而不是手动刷新它(以优化代码执行并拥有更清晰的代码架构)。

我希望能够以一种可以调用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...
    }
}

这个例子是一个非常简单的例子,目的是为了更好地表达我的要求——我需要/想要这样做的原因列在我最初的问题中。

4

0 回答 0