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