У меня есть UIView, в котором я переключаюсь между UITableView и MKMapView. MKMapView создается во время выполнения и анимируется в следующей функции:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:(self.mapView == nil ? UIViewAnimationTransitionFlipFromRight : UIViewAnimationTransitionFlipFromLeft)
forView:self.topView cache:YES];
// create new map view if necc.
if (self.mapView == nil)
{
self.mapView = [[VTMapView alloc] initWithFrame:self.topView.bounds];
mapView.mapType = MKMapTypeStandard;
mapView.delegate = self;
mapView.scrollEnabled = YES;
mapView.zoomEnabled = YES;
mapView.showsUserLocation = YES;
}
// map visible? show or hide it
if (![self isMapVisible])
{
tableView.hidden = YES;
[self.topView insertSubview:mapView aboveSubview:self.tableView];
mapLoadCount = 0;
} else {
tableView.hidden = NO;
[mapView removeFromSuperview];
}
[UIView commitAnimations];
В первый раз все работает нормально, но в последующих прогонах во время анимации вверху и внизу карты появляются горизонтальные полосы. Это выглядит примерно так:
Я пробовал играть с настройкой кеша, удалять другие представления и т. д. Этого не происходит в симуляторе, но это происходит в ОС 4.1.x и 3.1.x.
Если я не скрою tableView
, я увижу кусочки таблицы вместо серых полос, поэтому я думаю, что размер карты изменяется неправильно во время перелистывания.