【问题标题】:UIActivity indicator is not working on iPhone 4 (Retina)UIActivity 指示器在 iPhone 4 (Retina) 上不起作用
【发布时间】:2011-01-28 08:47:02
【问题描述】:

我有一个UIActivityIndicator,它在 iPhone 3G 模拟器/设备上运行良好,但在 iPhone 4(Retina) 的模拟器/设备上却无法运行。我想提一下,它是在黑色背景上。

【问题讨论】:

  • 请澄清您所说的“不工作”是什么意思。它是否显示不正确,没有显示在屏幕上等。截图会很好。

标签: iphone ios-simulator uiactivityindicatorview retina-display


【解决方案1】:

我以前也遇到过类似的问题。通过将指示器样式更改为UIActivityIndicatorViewStyleWhiteLarge 并为背景提供对比色(我选择黑色)来解决此问题。问题实际上是它不可见。

【讨论】:

  • 其实样式设置为UIActivityIndi​​catorViewStyleWhiteLarge,背景也是黑色的。
  • 其实我没有注意到它真的是灰色的,把它改成白色,帮助我,谢谢。
  • 将指示器更改为灰色也对我有所帮助,但我不太明白。指示器即使在白色背景上也应该很明显(它肯定是在较旧的 iphone 上)为什么它隐藏在视网膜显示器上?我尝试将背景颜色设置为白色以外的其他颜色,但仍然看不到大白
【解决方案2】:

UIActivityIndi​​cator 不会立即显示。

如果你有这样的代码:

//(pseudo-code)
//Create UIActivityIndicator
//show UIActivityIndicator
//do some other stuff expecting view to show

UIActivityIndi​​cator 不会显示,因为 UIActivityIndi​​cator 只会在程序的下一个运行循环中显示。

您可以通过以下方式解决此问题

{
    //create UIActivityIndicator
    //show UIActivityIndicator
    [self performSelector:@selector(doOtherStuff) withObject:nil afterDelay:0];
}

-(void)doOtherStuff {
    //do stuff 
}

performSelector 表示 doOtherStuff 在下一个运行循环中执行,此时 UIActivityIndi​​cator 将显示。

您还必须将其作为子视图添加到您希望它显示的视图中。

【讨论】:

    【解决方案3】:

    也许您正在显示不是主线程的线程中的微调器?你可以试试这个断言,看看你是否在主线程上:

    NSAssert([[NSThread currentThread] isMainThread],
        @"This should be run from the main thread.");
    

    如果断言失败,您可以将调用分派到主线程:

    dispatch_async(dispatch_get_main_queue(), ^{
        // display the spinner
    });
    

    不管怎样,没有看到我们都只是猜测的代码。

    【讨论】:

    • 我正在创建一个启动画面,它不在后台线程中运行。无论如何,它确实适用于 iPhone 3G 和 iPad。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2013-09-13
    相关资源
    最近更新 更多