0

我正在尝试使用 Xcode iPad 4.2 模拟器和 iPad 5 模拟器以及两个模拟器来确定我的 Route-Me 代码正在发生的事情,并给出不同的结果。这是代码的片段:

    //set size of the map view
    [self setMapView:[[[RMMapView alloc] initWithFrame:CGRectMake(0.0, 0.0, 1024, 768)] autorelease]];
    [mapView setBackgroundColor:[UIColor blackColor]]; 
    self.view = mapView; 
    //set locked on default location of view, currently on conus
    CLLocationCoordinate2D newLocation;
    newLocation.latitude = 37.83;
    newLocation.longitude = -96.58;
    [[mapView contents] moveToLatLong:newLocation]; 
    [[mapView contents] setZoom:4.5];

然后在下面我将应用程序设置为仅使用横向模式:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
         if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { return YES; } return NO;
 }

我在 Xcode 的 iPad Simulator 4.2 中运行这段代码,我得到了下面这张看起来很完美的图片: 这里看起来不错

然后我在 Xcode 的 iPad Simulator 5 上运行同样的代码,我得到了这个奇怪的图像: 这很奇怪

我很困惑他们不应该产生相同的结果吗?还是我在这里遗漏了什么?

编辑:我在我的 plist 文件中将初始界面方向和支持的界面方向设置为只有横向。

EDIT2:我尝试按原样使用下面的代码运行它,它似乎可以工作,但是如果你将 setZoom 行放入代码中,图片会再次被切断,请参见截图:

[self setMapView:[[RMMapView alloc] initWithFrame:CGRectMake(0.0, 0.0, 1024, 768)]];
[mapView setBackgroundColor:[UIColor grayColor]];
self.view = mapView;

在此处输入图像描述

这真的很奇怪,一旦我添加了 [mapView.contents setZoom:4.5]; 它再次发生在屏幕右侧丢失的部分。

4

2 回答 2

1

我已经弄清楚似乎我不能假设我正在修改父视图的大小。为了解决这个问题,我需要先将 self.view 分配给父控制器,然后再查看 mapView:

UIView* parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
parentView.autoresizesSubviews = YES;
self.view = parentView;

mapView = [[RMMapView alloc] initWithFrame:CGRectMake(0.0, 0.0, 1024, 768)];
[parentView addSubview:mapView]; 

CLLocationCoordinate2D newLocation;
newLocation.latitude = 37.83;
newLocation.longitude = -96.58;
[mapView.contents moveToLatLong:newLocation];

[mapView setBackgroundColor:[UIColor grayColor]];
[mapView.contents setZoom:4.5];
于 2011-11-17T18:24:54.440 回答
0

在横向时,您需要反转宽度和高度。

RMMapView *baseMap = [[[RMMapView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.height, self.view.bounds.size.width)] autorelease];

请记住,设备保持相同的高度和宽度,您的矩形只需要更改以更改方向。

于 2012-04-10T20:31:33.050 回答