2015-11-01 70 views
4

如何在Swift中更改Map上Annotation标注窗口的大小。我试图在右侧和左侧视图的每个组件上制作更大的CGSize,但没有任何成功。最终视图的高度仍然相同。如何更改Annotation标注窗口的高度Swift

这里是我的代码:

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

    print("delegate called") 

    if !(annotation is CustomPointAnnotation) { 
     return nil 
    } 

    let reuseId = "test" 

    var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) 
    if anView == nil { 
     anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId) 


     selectedUstanova = (annotation as! CustomPointAnnotation).ustanova 


     anView!.canShowCallout = true 
    } 
    else { 
     anView!.annotation = annotation 
    } 

    //Set annotation-specific properties **AFTER** 
    //the view is dequeued or created... 

    let cpa = annotation as! CustomPointAnnotation 
    anView!.image = UIImage(named:cpa.imageName) 
    return anView 
} 
func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) 
{ 
    let button : UIButton = UIButton(type: UIButtonType.Custom) as UIButton 
    let image = UIImage(named: "telephone") 
    button.layer.cornerRadius = 10 
    button.layer.backgroundColor = UIColor.whiteColor().CGColor 
    button.layer.masksToBounds = true 
    button.setBackgroundImage(image, forState: UIControlState.Normal) 
    button.frame = CGRectMake(0, 0, 35, 200) 
    button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside) 


    let labelTitle : UILabel = UILabel(frame: CGRectMake(20,0,150,50)) 
    labelTitle.text = selectedUstanova!.ime 
    let labelSubTitle : UILabel = UILabel(frame: CGRectMake(20,50,150,100)) 
    var ustanovaOpis = "" 
    if selectedUstanova!.opis != nil{ 
     ustanovaOpis+=selectedUstanova!.opis!+"\n" 
    } 
    if selectedUstanova!.telefon != nil{ 
     ustanovaOpis+=selectedUstanova!.telefon! 
    } 
    labelSubTitle.text = ustanovaOpis 
    let leftCAV : UIView = UIView(frame: CGRectMake(0,0,250,250)); 
    let leftCAV2: UIView = UIView(frame: CGRectMake(0,0,250,250)); 
    let imageB = UIImage(named: "bigbutton") 
    let imageView : UIImageView = UIImageView(frame: CGRectMake(0,0,300,300)) 
    imageView.image = imageB; 
    leftCAV.addSubview(imageView) 
    leftCAV.addSubview(labelTitle) 
    leftCAV.addSubview(labelSubTitle) 
    view.leftCalloutAccessoryView = leftCAV; 
    view.rightCalloutAccessoryView = leftCAV2; 
} 

有没有做更大的查看我试图改变左右标注附属视图,但没有成功迄今规模的机会。

回答

0

如果您只是想更改注释标注的高度,这里是简单的方法。而我只是把身高提高到200个单位。

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 
    if annotation is MKUserLocation { 
     return nil 
    } 
    let reuseID = "pin" 
    var pinView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseID) as? MKPinAnnotationView 
    if pinView == nil { 
     pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: reuseID) 
     pinView!.canShowCallout = true 
     pinView!.animatesDrop = true 
     pinView!.pinTintColor = UIColor.blackColor() 
    } 
    pinView!.detailCalloutAccessoryView = self.configureDetailView(pinView!) 
    return pinView 
} 

func configureDetailView(annotationView: MKAnnotationView) -> UIView { 
    let snapshotView = UIView() 
    let views = ["snapshotView": snapshotView] 
    snapshotView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[snapshotView(200)]", options: [], metrics: nil, views: views)) 
    //do your work 
    return snapshotView 
}