XIB 和模拟器/iOS 设备中元素的不同位置

Posted

技术标签:

【中文标题】XIB 和模拟器/iOS 设备中元素的不同位置【英文标题】:Different Position of an Element in the XIB and the Simulator / iOS Devices 【发布时间】:2013-01-23 11:16:49 【问题描述】:

我在 viewController 的 scrollView 中实现了一个小的 mapView (65x65)。如果我为每个 XIB 设置 mapView 的位置并在模拟器或 ios 设备上运行它,它不会位于正确的位置:

XIB 正确位置 iPhone 5 到高 iPhone 4(或模拟器)非常高

我可以用这些代码纠正每种情况的位置,但这不是解决方案:

XIP 中相同位置的代码:

CGRect newFrameMapView = CGRectMake(10,171,65,65);
mapView.frame = newFrameMapView;

为 iPhone 5 上的输出更正它的代码:

CGRect newFrameMapView = CGRectMake(10,215,65,65);
mapView.frame = newFrameMapView;

为 iPhone 4 上的输出更正它的代码:

CGRect newFrameMapView = CGRectMake(10,302,65,65);
mapView.frame = newFrameMapView;

注意事项:

我在顶部有一个 navigationController。 如果我将 mapView 放在 scrollView 之外,什么都不会改变。 我不使用自动布局

--- 编辑 --- 23.01.2013 -----------------------------------

我已将“mapView”重命名为“mapView2”,以确保不会更改代码其他部分的位置。

这里是.h的重要代码片段

#import <MapKit/MapKit.h>

@interface ViewControllerDetail : UIViewController <MKMapViewDelegate> 

    IBOutlet MKMapView *mapView2;



@property(nonatomic, retain) IBOutlet MKMapView *mapView2;

@end

和.m

@implementation ViewControllerDetail

@synthesize mapView2;

[...]

// Basic Settings Map

[mapView2 setMapType:MKMapTypeStandard];
[mapView2 setZoomEnabled:NO];
[mapView2 setScrollEnabled:NO];
[mapView2 setDelegate:self];

// Map Start

MKCoordinateRegion myStartRegion =  0.0, 0.0, 0.0, 0.0 ;
myStartRegion.center.latitude = 44.087439;
myStartRegion.center.longitude = 2.139614;
myStartRegion.span.latitudeDelta = 0.003;
myStartRegion.span.longitudeDelta = 0.003;
[mapView2 setRegion:myStartRegion animated:NO];


// Map Point

MKCoordinateRegion myBeispielRegion =  0.0, 0.0, 0.0, 0.0 ;
myRegion1.center.latitude = 44.087439;
myRegion1.center.longitude = 2.139614;
classAnnotation *annotationRegion1 = [[classAnnotation alloc] init];
annotationRegion1.coordinate = myRegion1.center;
[mapView2 addAnnotation:annotationRegion1];

【问题讨论】:

我添加了一些我的代码片段。我希望它能澄清我的问题。 【参考方案1】:

我发现了错误:

(不知道这是否正常,我使用的是 Xcode 4.5 版)

如果我在 Xib 中插入 MapView,它会自动设置为 Autosizing left/bottom。我没有注意到,我认为标准的自动调整大小是左/上。

【讨论】:

以上是关于XIB 和模拟器/iOS 设备中元素的不同位置的主要内容,如果未能解决你的问题,请参考以下文章

iOS 视频播放性能模拟器与设备

iOS,布局位置取决于屏幕尺寸问题

iOS 7 到 iOS 8 中当前位置纬度和经度的不同行为

在真实 iOS 设备上模拟虚假位置

在 SpriteKit 中处理不同的 iOS 设备分辨率

iOS模拟器更改设备不起作用