按钮图像变化缓慢

时间:2011-09-09 16:13:35

标签: iphone ios uibutton

我正在处理奇怪的错误,我创建了一个包含uibuttons的自定义分段控件(控制器本身是UIView的子类。我更改了所选和正常控制状态的按钮图像以指示选择。

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

1 个答案:

答案 0 :(得分:1)

你没有提供很多细节,但听起来很,好像你在当前的运行循环中尝试做太多工作一样。如果是,那么答案将是相关的:

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的延迟通常很好;在调用指定方法之前,它仍然可以实现让当前运行循环完成并显示更新的效果。有时添加额外的延迟会改善动画外观。