【问题标题】:Black Translucent Navigation Bar + MKMapView -> Setting map center is not visually correct黑色半透明导航栏 + MKMapView -> 设置地图中心视觉不正确
【发布时间】:2012-03-01 10:48:35
【问题描述】:

我在导航控制器中有一个地图视图,位于半透明黑色导航、状态和搜索以及工具栏下。

地图的实际高度包括这些条形下方的区域。

+ 左附件按钮使地图在 Pin 图上居中。

左图是在地图以图钉坐标为中心之前。

右边是地图以大头针坐标为中心时。

问题是中心应该是可见地图区域的中心,而不是整个地图区域。 (这会导致图钉不出现在地图的中心。

我是否可以进行一些偏移或边界设置以使地图视图正确居中?

【问题讨论】:

  • 您可以将 mapView 设置为可见区域的大小。将地图置于导航栏下方是否有任何具体原因?
  • :D 使用不透明的状态栏和导航栏,它们不会与地图重叠。否则,您还可以通过在添加地图的视图的顶部位置留出空间来更改地图的框架。
  • 我的意思是 BlackNavigationBar 和 BlackStatusBar
  • 实际上我希望地图在栏下可见。它给用户一种更大的地图的感觉。有什么方法可以拦截“设置中心”和/或“设置区域”事件/消息并在呈现之前对其进行更改..?
  • 区域变化事件有委托方法。

标签: iphone objective-c ios uinavigationcontroller mkmapview


【解决方案1】:

您可以为您的可见地图区域(导航栏下方)覆盖一个透明的 UIView (tView),获取他的点,计算您需要的偏移量并再次设置区域。 (我猜你正在使用 setRegion 来使地图居中):

CGPoint currentPoint = [mapView convertCoordinate:myPin.coordinate toPointToView:self.view];
CGRect tFrame = [tView frame];
tFrame.origin.y = currentPoint.y - tFrame.size.height;
tFrame.origin.x = currentPoint.x - (tFrame.size.width/2);

MKCoordinateRegion newRegion = [mapView convertRect:tFrame toRegionFromView:self.view];
[mapView setRegion:newRegion animated:YES];

您应该仔细检查 tFrame,以便为您的应用程序设置最佳值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多