button图像变化缓慢

我正在处理和奇怪的错误,我已经创build了一个由uibuttons组成的自定义分段控件(控制器本身是UIView的一个子类,我改变了button的图像为选定和正常的控制状态,以指示select。

在IB的父视图中,我已将视图的标识设置为我的自定义类。 问题是我有一个tableView,当我滚动它和滚动animation时,我的自定义视图中的button不会立即更改其图像,而是等待表完成滚动,然后更新。 有任何想法吗?

你没有给出很多细节,但是听起来好像你正在试图在当前的运行循环中做太多的工作。 如果是的话,答案将是相关的:

在执行任何显示更新之前,iOS会等待代码执行完毕。 因此,任何更新实际上都会排队,直到您的当前代码块完成。 为了解决这个问题,最常见的技巧是允许当前的运行循环结束,并在非常短暂的延迟之后再次执行拾取。

所以,在你的情况下,调用代码来更新你的自定义段控件。 然后,而不是调用代码更新您的表,停放在另一个方法的代码,并调用该方法使用[self performSelector: @selector(delayedUpdate) withObject: nil afterDelay:0.1];

为了说明如何更改代码:

之前

  [self updateSegmentController]; [self updateTableScrollPosition]; return; 

  [self updateSegmentController]; [self performSelector: @selector(updateTableScrollPosition) withObject: nil afterDelay: 0.1]; return; 

通常延迟0.0工作得很好; 在调用指定方法之前,仍然可以达到让当前运行循环完成和显示更新的效果。 有时增加额外的延迟可以改善您的animation外观。