我有一个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];
第一次它工作正常,但在将来的运行中,动画期间地图视图的顶部和底部都有水平条。它看起来像这样:
我尝试过使用缓存设置,删除其他视图等。它不会在模拟器中发生,但它会在OS 4.1.x和3.1.x上发生。
如果我不隐藏tableView
,我会看到桌子上的位而不是灰色条,所以我认为在翻转过程中mapview的大小调整不正确。
答案 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];
这就是答案。