【问题标题】:Button image change slow按钮图像变化缓慢
【发布时间】:2011-09-09 16:13:35
【问题描述】:

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

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

【问题讨论】:

  • 通过点击接受对勾来接受人们就您之前的问题给出的一些答案。这就是现在没人回答的原因。

标签: iphone ios uibutton


【解决方案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 就可以了;它仍然达到了让当前的run loop完成并在调用指定方法之前更新显示的效果。有时添加额外的延迟会改善您的动画外观。

【讨论】:

  • 嗨,马特感谢您的回复。不幸的是我没有运气,我没有对表格做任何事情我只使用静态数据,只要表格滚动,延迟就会持续。滚动动画完成后就可以了。还有什么建议吗?
猜你喜欢
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 1970-01-01
  • 2012-08-12
  • 2015-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多