【问题标题】:Delay when updating the background of a UIButton更新 UIButton 的背景时延迟
【发布时间】:2026-01-06 16:00:01
【问题描述】:

我正在使用 setBackgroundImage:forState: 来更新 UIButton 的背景。背景更新,但仅在几秒钟后。这里显然有一些刷新周期在起作用,但我无法确切找到问题所在。我尝试使用 setNeedsRefresh 和 setNeedsDisplay 没有任何结果。

如何瞬间改变 UIButton 背景?

谢谢

【问题讨论】:

  • 图像存储在哪里?本地还是远程?
  • 贴一些代码,我们可以知道确切的问题。
  • 您是在按钮初始化时还是稍后设置颜色?
  • 图像存储在本地,我没有设置任何其他内容

标签: iphone ios uibutton delay setbackground


【解决方案1】:

当您尝试在后台线程(例如,在委托回调中)执行 UIKit 操作时,通常会导致此类奇怪的延迟。试试这个:

dispatch_async(dispatch_get_main_queue(), ^{
    // set your button background here
});

【讨论】:

  • 这个完全相同的代码并没有解决我的问题,但让我朝着正确的方向前进。这可能是线程相关的问题。
  • mmm 经过一些测试,似乎 setBackgroundImage 已经在主线程中调用了:-(
  • 那很奇怪。应该立即设置背景图像。图片是不是特别大?
  • 我的错误。这确实是一个线程问题,您的解决方案有效。只是我的应用程序中有同步和异步图像加载,并没有检查代码的正确部分。谢谢!
最近更新 更多