【发布时间】:2015-03-18 14:55:11
【问题描述】:
这是一个关于 iOS、XCode、Auto Layout 和 Objective-C 的问题。我觉得它有一个简单的答案,但我在 SO 中搜索了高低并找不到解决方案。
我想在 Google 地图的中心放置一个小十字准线图像,这样当用户在地图上平移时,图像保持固定。为此,我只需将 UIImageView 作为子视图添加到 Google 地图视图,这是一个 GMSMapView,我已经制作了一个 IBOutlet,self.mapView。
我使用以下方法计算放置图像的位置:
crosshairs.center = CGPointMake(self.mapView.bounds.size.width / 2, self.mapView.bounds.size.height / 2);
同时,我在地图视图上设置了约束,使其前导和尾随空格与超级视图挂钩。这应该使它的宽度和高度流动——至少我是这么认为的。
事实上,当我在运行时 NSLog 地图视图的宽度和高度时,它们反映了 Xcode 中尺寸检查器中指定的宽度(600)和高度(384)——即使我没有固定宽度也没有限制的高度。
结果是图像不是以屏幕为中心,而是以地图视图的错误宽度和高度(延伸到屏幕外)为中心。
我知道我忽略了一些愚蠢的东西,或者我错过了自动布局的基本概念。无论哪种方式,我都将不胜感激。
会
【问题讨论】:
-
为什么不让 UIImageView 与 MapView 处于同一级别?
-
你在哪里添加十字准线?您应该像以前一样在
didLayoutSubviews中执行此操作,然后不会设置框架 - 正如您所发现的那样,但正如@hashier 所说,您可以简单地在 IB 中添加十字准线并将它们限制在那里
标签: ios objective-c xcode autolayout