我有一个产品详细信息屏幕,当用户选择产品的表格/网格视图中显示的产品之一时,该屏幕会滑入视图。我使用CATransition来向上滑动视图,而不是使用presentModalViewController。
原因是因为在详细信息屏幕中,我允许用户向左/向右滑动以浏览产品表并显示相应的详细信息。同样,幻灯片动画使用CATransition完成。当我使用模态视图来显示初始细节屏幕时,刷入的产品屏幕将显示为旋转并且通常表现得很奇怪。我认为它与在模态视图中使用CATransition有关,所以我决定使用CATransition来呈现初始屏幕。以下是执行幻灯片动画的代码:
+(void)slideFromView:(UIView*)currentView toView:(UIView*)nextView direction(CCUISlideDirection)direction{
// get the the underlying UIWindow, or the view containing the current view
UIView *theWindow = [currentView superview];
// remove the current view and replace with the next view to display
[currentView removeFromSuperview];
[theWindow addSubview:nextView];
// set up an animation for the transition between the views
CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
switch (direction) {
case CCUISlideLeft:
[animation setSubtype:kCATransitionFromRight];
break;
case CCUISlideRight:
[animation setSubtype:kCATransitionFromLeft];
break;
case CCUISlideUp:
[animation setSubtype:kCATransitionFromTop];
break;
case CCUISlideDown:
[animation setSubtype:kCATransitionFromBottom];
break;
default:
break;
}
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
}
现在所有滑入的视图转换都可以正常工作,直到我收到内存警告。收到警告后,然后在屏幕外关闭/滑动详细信息屏幕,产品的部分表格/网格视图将显示为已剪切。具体来说,桌子右侧约1/3显示为白色。请参见下面的屏幕截图链接:
http://www.dropbox.com/gallery/19636498/1/work?h=4ecde7
此外,这是解除视图的委托代码:
-(IBAction)dismiss:(id)sender
{
MyWishesItemController* controller = (MyWishesItemController*)sender;
[CCUIHelper slideFromView:controller.currentView toView:self.view direction:CCUISlideDown];
if ([[_wishListResultsController fetchedObjects] count] > 0) {
[self showWishList];
}
else {
[self showEmptyList];
}
}
此外,当我在应用程序中选择不同的选项卡视图并返回到表视图时,它看起来很好。对我来说奇怪的是它只是表格的一部分被消除了。当我收到警告时,我已经尝试重新加载表格,但这不起作用。我也通过仪器运行它来识别和修复一些泄漏。
除了清除didReceiveMemoryWarning方法中的一些缓存,以及最小化内存使用以避免警告之外,我应该怎么做才能解决此问题。 任何建议都将不胜感激。
答案 0 :(得分:0)
检查tableview上的自动调整大小。确保在内存警告后正确调整大小。