How to change the height of the Swift annotation output window

How to change the size of the annotation leader window on a map in Swift. I tried to do a great CGSize for each of the components in the right and left views, but without any success. The height of the view at the end is all the same.

Here is my code:

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;
}

Is there a chance to make View larger, I tried to resize the left and right accessory accessories, but without success so far.

+4
source share
1 answer

If you are only interested in changing the height of the annotation statement , here is an easy way. And I just make the height up to 200 units.

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
}
0

Source: https://habr.com/ru/post/1614047/


All Articles