leftCalloutAccessoryView已设置但现在显示

时间:2015-11-03 16:43:41

标签: ios swift mkmapview

我正在设置单击地图图钉时要显示的其他信息。

在这个注释中,我将带有图像的按钮传递给rightCalloutAccessoryView,但是虽然它似乎保留了空间,但它并没有显示图像。

我还应该注意,这是来自应用程序的副本,该应用程序可以正常工作,并且图像已被替换为不同的配色方案但是我不认为此图像的大小已经改变但是如果配件视图是对图像大小敏感然后可能是一个问题。

这里希望这只是我缺少的RightCalloutAccessoryView的细微差别。

  func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
let reuseId = "mapViewPin"

var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
    anView!.annotation = annotation

let button : UIButton = UIButton(type: UIButtonType.DetailDisclosure)
button.setImage(UIImage(named: "goArrow"), forState:UIControlState.Normal)
button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
anView!.rightCalloutAccessoryView = button
return anView
}

这里有一个缺少箭头图像的例子。

What we see when I click on the pin

在这里,我们有你期望看到的东西,一个灰色箭头。

Image name, the image you would expect to see

1 个答案:

答案 0 :(得分:1)

好的,我发现了这个问题。

问题是系统默认情况下会在图像上添加色调,因此我需要覆盖色调以获得正确的颜色。

新代码看起来像这样。

let button : UIButton = UIButton(type: UIButtonType.DetailDisclosure)
button.setImage(UIImage(named: "goArrow")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal), forState:UIControlState.Normal)
button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
anView!.rightCalloutAccessoryView = button

return anView

这里的关键是使用" imageWithRenderingMode"并设置为" AlwaysOriginal"这将删除此图像使其完全变白的默认色调。