Таинственные границы во время анимации MKMapView

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


person sehugg    schedule 26.09.2010    source источник


Ответы (1)


Измените эту строку:

UIView setAnimationTransition:(self.mapView == nil ? UIViewAnimationTransitionFlipFromRight : UIViewAnimationTransitionFlipFromLeft)
                   forView:self.topView cache:YES];

К этой строке:

UIView setAnimationTransition:(self.mapView == nil ? UIViewAnimationTransitionFlipFromRight : UIViewAnimationTransitionFlipFromLeft)
                   forView:self.topView cache:NO];

И это ответ.

person sehugg    schedule 26.09.2010
comment
Это комментарий или редактирование исходного вопроса. Это не подходит в качестве ответа. - person Nick; 27.09.2010