ios - 快速向 callOut View 添加标题

标签 ios swift mkmapview

我创建了下面的 View ,我想在 callOut 中添加一个标题,但是我似乎无法弄清楚在哪里以及如何做。我想将它添加到注释中,它在 else if annotation.isKindOfClass(FBAnnotation) 语句中

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {

    var reuseId = ""

    if annotation.isKindOfClass(FBAnnotationCluster) {
        var reuseId = "Annonation"
        reuseId = "Cluster"
        var clusterView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
        clusterView = FBAnnotationClusterView(annotation: annotation, reuseIdentifier: reuseId)

        return clusterView

    } else if annotation.isKindOfClass(FBAnnotation) {

        let singleAnnotation = annotation as! FBAnnotation
        reuseId = "Pin"
        var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
        pinView = FBSingleClusterView(annotation: annotation, reuseIdentifier: reuseId) as FBSingleClusterView
        pinView!.image = UIImage(named: singleAnnotation.imageString)


        pinView?.canShowCallout = false
        let imagePinView = UIImageView(frame: CGRectMake(7.5, 7.5, pinView!.image!.size.width-15, pinView!.image!.size.width-15))
        imagePinView.clipsToBounds = true
        imagePinView.layer.cornerRadius = (pinView!.image!.size.width-15)/2
        imagePinView.contentMode = UIViewContentMode.ScaleAspectFill
        imagePinView.image = UIImage(data: singleAnnotation.logoImage)
        pinView?.addSubview(imagePinView)




        return pinView
    } else {
        return nil
    }

}

FBAnnotation

class FBAnnotation : NSObject {

    var coordinate = CLLocationCoordinate2D()
    var imageString = ""
    var logoImage = NSData()

}

extension FBAnnotation : MKAnnotation {

}

最佳答案

您似乎将 canShowCallout 设置为 false。如果您想要标注,这应该是正确的。

pinView?.canShowCallout = false

您还必须在 MKAnnotation 中设置 title 属性以使其显示在标注中。

MKAnnotation 协议(protocol)有一个标题,但它是可选的,因此您必须确保它已在您的自定义注释中实现

class FBAnnotation : NSObject, MKAnnotation {

    var coordinate = CLLocationCoordinate2D()
    var imageString = ""
    var logoImage = NSData()
    var title: String?
    var subtitle: String?
} 

class FBAnnotation : NSObject {

    var coordinate = CLLocationCoordinate2D()
    var imageString = ""
    var logoImage = NSData()

}

extension FBAnnotation : MKAnnotation {
    var title: String?
    var subtitle: String?    
}

关于ios - 快速向 callOut View 添加标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33316561/

相关文章:

ios - 在 IOS 8 中的 MKMapView 上添加按钮

ios - Delphi IOS链接器错误库未找到

iphone - 以编程方式创建的按钮不会在 iOS 的自定义 View 中触发事件

ios - Swift:网络不可用时Webview提示对话框重新加载当前页面

ios - 在更改 VC 之前获取并存储 PanoramaView 的位置

ios - 使用 UITextViews 作为 UITextFields

iphone - 替换 mkannotationview 中的 calloutaccessoryview

ios - 调整 CVPixelBuffer 的大小

ios - SwiftUI 中的惰性属性

ios - 如何更改 Apple Map (MKMapView) 的背景颜色?