MKMapView动画期间的神秘边框

时间:2010-09-26 15:40:03

标签: iphone core-animation mapkit

我有一个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

我尝试过使用缓存设置,删除其他视图等。它不会在模拟器中发生,但它会在OS 4.1.x和3.1.x上发生。

如果我不隐藏tableView,我会看到桌子上的位而不是灰色条,所以我认为在翻转过程中mapview的大小调整不正确。

1 个答案:

答案 0 :(得分:0)

更改此行:

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

到这一行:

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

这就是答案。