Таинственные границы во время анимации MKMapView - PullRequest
0 голосов
/ 26 сентября 2010

У меня есть 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];

В первый раз он работает нормально, но в будущих прогонах во время анимации в верхней и нижней части карты отображаются горизонтальные полосы.Это выглядит примерно так:

alt text

Я пытался поиграть с настройкой кэша, удалить другие представления и т. Д. В симуляторе этого не происходит, но в ОС это происходит4.1.x и 3.1.x.

Если я не скрою tableView, я вижу биты таблицы вместо серых полос, поэтому я думаю, что при просмотре карты размер карты изменяется неправильно.

1 Ответ

0 голосов
/ 26 сентября 2010

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

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

На эту строку:

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

И это ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...