2010-09-26 16 views
0

J'ai un UIView dans lequel je bascule entre un UITableView et un MKMapView. Le MKMapView est créé lors de l'exécution et d'animation dans la fonction suivante:Frontières mystérieuses pendant l'animation 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]; 

La première fois que cela fonctionne très bien, mais à l'avenir court il y a des barres horizontales en haut et en bas de la vue de la carte lors de l'animation. Il ressemble à ceci:

alt text

J'ai essayé de jouer avec la mise en cache, la suppression d'autres vues, etc. Il ne se produit pas dans le simulateur, mais il arrive sur OS 4.1.x et 3.1. X.

Si je ne cache pas le tableView, je vois des bits de la table au lieu des barres grises, donc je pense que la carte est mal redimensionnée pendant le flip.

Répondre

0

Modifier cette ligne:

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

à cette ligne:

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

Et qui est la réponse.

+0

Ceci est un commentaire ou une modification de la question d'origine. Cela n'a pas sa place comme réponse. – Nick