在 iOS6 之前,我使用 MKMapView 的子视图根据用户的 GPS 方向(非航向)旋转 MKMapView。一切都很完美,我将视图初始化如下:
mapView = [[MKMapView alloc] init];
mapView.delegate = self;
mapView.clipsToBounds = FALSE;
mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
self.view = mapView;
旋转时,我做了以下事情:
UIView *innerMap = [mapView.subviews objectAtIndex:0];
if([innerMap isKindOfClass:[UIView class]])
{
innerMap.transform = CGAffineTransformMakeRotation(degreesToRadians(-lastDegrees));
}
正如我所说,一切都很完美。好消息是,当地图旋转时,它会自动缩放到视图的整个框架并填充旋转创建的黑色角落。
但是,新的 iOS6 地图不会缩放和填充角落!所以当它旋转时,一半的视图丢失了,另一半是黑色的(背景色)。我尝试了什么?
- 尝试新 MKMapview 的所有不同子视图(也将它们的调整掩码设置为与地图视图相同的值)
- 试图将 contentmode 设置为 scaleToFill (也在子视图中)
- 试图将自动调整子视图设置为 true
- 旋转后尝试重置框架
不幸的是,我所有的尝试都没有效果。不知何故,谷歌地图会自动缩放并填充黑色角落,而 iOS 地图则不会。那么我是否在这里遗漏了一些东西,我忘记了 UIView 的一些很棒的属性,或者这对于新的 iOS6 地图来说根本不可能?