У меня есть экран сведений о продукте, который открывается, когда пользователь выбирает один из продуктов, отображаемых в виде таблицы / таблицы продуктов.Я использую 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 и минимизации использования памяти во избежание предупреждений, что я должен делать для устранения этой проблемы,Любые предложения будут с благодарностью.