Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 地图视图用户位置注释中心由导航栏移动_Ios_Uinavigationcontroller_Mapkit_Navigationbar - Fatal编程技术网

Ios 地图视图用户位置注释中心由导航栏移动

Ios 地图视图用户位置注释中心由导航栏移动,ios,uinavigationcontroller,mapkit,navigationbar,Ios,Uinavigationcontroller,Mapkit,Navigationbar,我不确定这是否是MapKit中的一个bug,或者我只是在做一些明显错误的事情,但我在尝试将用户位置居中,同时使用导航控制器中的导航栏时发现了一个问题。我的目标是拥有一个透明的导航栏,我可以这样实现: [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefa

我不确定这是否是MapKit中的一个bug,或者我只是在做一些明显错误的事情,但我在尝试将用户位置居中,同时使用导航控制器中的导航栏时发现了一个问题。我的目标是拥有一个透明的导航栏,我可以这样实现:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                              forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;

并且还有用户位置注释,它位于电话屏幕注释的中间,而不是视图的中间部分,因为它属于导航栏的底部。我尝试了所有方法,从忽略滚动插入到将edgesForExtendedLayout属性设置为所有不同的值。我现在拥有的是这样的:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                              forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
如您所见,当地图视图横跨导航栏下方时,用户位置不考虑真实中心,而是向下移动。结果应该是这样的:

[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                              forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;

还有人认为这是可以修复的,或者我应该提交一份错误报告吗?

这有点像黑客,但您可以将日历的view.frame.origin.y设置为负值以抵消系统的偏移量

编辑:

MKAnnotationView类的

@属性语法点中心偏移

讨论
默认情况下,注释视图的中心点放置在关联注释的坐标点上。可以根据需要使用此特性重新定位注释视图。该x和y偏移值以像素为单位测量。正偏移值将注释视图向下和向右移动,而负偏移值将注释视图向上和向左移动。

ugh我觉得很脏……这是我目前最好的注释视图,所以这里什么也没有!我想我找到了:MKAnnotationView类的@propertynonatomic CGPoint centerOffsetI使用以下方法修复了它:-voidmapView:MKMapView mapView DidAddAnnotationView:NSArray*视图{UIView视图=[self.mapView viewForAnnotation:self.mapView.userLocation];view.transform=CGAffineTransformMakeTransaction0,-self.navigationController.navigationBar.height/2+10;}