闪烁的UIImageView

时间:2012-11-15 08:40:31

标签: ios ipad uiimageview flicker redraw

我创建了一个带有主视图的kiosk应用程序和一个带有图像轮播作为屏幕保护程序的模态视图。无论何时触摸屏幕,此模态视图都会向下滑动。

如果设备在应用程序运行的情况下长时间独立(过夜),屏幕保护模式动画时屏幕会出现重绘问题。看起来os没有什么可以绘制主屏幕的背景图像。主屏幕上的控件和文本绘制得如此,只有背景图像被模态中隐藏动画的工件所取代。这种情况发生在两台设备上(iPad 2 3G 16GB)。仅当应用程序已运行很长时间时才会出现这种情况,并且屏幕是否打开无关紧要。有问题的背景UIImageView是一个vanilla UIImageView,除了“Image”之外没有其他属性。

看起来像这样(客户端徽标和一些文字模糊了):http://tinypic.com/view.php?pic=2qx47bt&s=6

任何可能出错的想法以及如何解决这个问题?

编辑: 这是隐藏屏幕保护程序的代码。非常标准,没有hocus pocus。

- (void)hideScreenSaver {
    dispatch_async(dispatch_get_main_queue(), ^{
        if (![[[self mainViewController] presentedViewController] isKindOfClass:[UINavigationController class]]) {
            [[self mainViewController] dismissModalViewControllerAnimated:TRUE];
        }
    });
}

screensaverViewController创建于 - (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions(在主线程中)

[[GMAppManager sharedManager] setScreenSaverViewController:[[AAScreenSaverViewController alloc] initWithNibName:@"AAScreenSaverViewController" bundle:nil]];

2 个答案:

答案 0 :(得分:2)

`我绝对遇到过这个问题只是在uikit资源上泄漏了。运行构建并分析和修复泄漏。还要在所有deallocs上设置断点并确保它们被调用。如果保留并且不释放对类的一部分的单个引用,则不会调用dealloc。还要检查传递参数的所有对象:self。如果使用self的对象未释放,则这些对self的引用也将阻止dealloc。如果环路紧张,自动释放池不会消耗。尝试使用显式版本。需要分配而不是保留。

发布更多错误和问题,我看一看。你有一个很酷的项目。

答案 1 :(得分:2)

当你说

  

有问题的背景UIImageView是一个带有的vanilla UIImageView   没有“图像”以外的属性发生变化。

在更改UIImageView

之前,您是否可以确保先清除Image youeImageView.image = nil

我相信你必须知道。但是,为了以防万一,你能尝试一下吗?

{{1}}然后设置其他图像?

通过查看您提供的图像,原因似乎不是别的,恕我直言。