我创建了一个带有主视图的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]];
答案 0 :(得分:2)
`我绝对遇到过这个问题只是在uikit资源上泄漏了。运行构建并分析和修复泄漏。还要在所有deallocs上设置断点并确保它们被调用。如果保留并且不释放对类的一部分的单个引用,则不会调用dealloc。还要检查传递参数的所有对象:self。如果使用self的对象未释放,则这些对self的引用也将阻止dealloc。如果环路紧张,自动释放池不会消耗。尝试使用显式版本。需要分配而不是保留。
发布更多错误和问题,我看一看。你有一个很酷的项目。
答案 1 :(得分:2)
当你说
时有问题的背景UIImageView是一个带有的vanilla UIImageView 没有“图像”以外的属性发生变化。
在更改UIImageView
Image
youeImageView.image = nil
我相信你必须知道。但是,为了以防万一,你能尝试一下吗?
{{1}}然后设置其他图像?
通过查看您提供的图像,原因似乎不是别的,恕我直言。