0

I am having custom Annotation and it's calloutbubble having the view in which the table is there which height is 200.
But while setting it in callout bubble it will not effect the size of callout bubble
How can i achive this?
Here is my code

-(MKAnnotationView *)mapView:(MKMapView *)mapView1 viewForAnnotation:(id<MKAnnotation>)annotation
{
     if([annotation isKindOfClass:[CustomAnnotation class]])
    {
        CustomAnnotation *location = (CustomAnnotation *)annotation;
        MKAnnotationView   *annotation_View = [mapView1 dequeueReusableAnnotationViewWithIdentifier:@"customAnnotation"];
        if (annotation_View == nil)
        {
            annotation_View = location.annotationView;
            if ([location.title isEqualToString:@"My Spot"])
            {
                annotation_View.image = [UIImage imageNamed:@"orange.png"];
            }
            else
            {
                annotation_View.image=[UIImage imageNamed:@"ocean.png"];
            }
        }
        else
        {
            annotation_View.annotation = annotation;
        }
        [self configureDetailView:annotation_View];
        return annotation_View;
    }
    return nil;
}

-(void)configureDetailView : (MKAnnotationView*)annotationView1
{
    self.AnnotationViewForDetail.frame = CGRectMake(0, 0, 100, 200);
    annotationView1.detailCalloutAccessoryView = self.AnnotationViewForDetail;
}
D4ttatraya
  • 3,344
  • 1
  • 28
  • 50
ios Developer
  • 39
  • 1
  • 8

1 Answers1

0

Please refer this answer.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
    static NSString *identifier = @"MyAnnotationView";

if ([annotation isKindOfClass:[MKUserLocation class]]) {
    return nil;
}

MKPinAnnotationView *view = (id)[mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (view) {
    view.annotation = annotation;
} else {
    view = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
    view.canShowCallout = true;
    view.animatesDrop = true;
}
view.detailCalloutAccessoryView = [self detailViewForAnnotation:annotation];

return view;
}

- (UIView *)detailViewForAnnotation:(PlacemarkAnnotation *)annotation {
    UIView *view = [[UIView alloc] init];
    view.translatesAutoresizingMaskIntoConstraints = false;

    UILabel *label = [[UILabel alloc] init];
    label.text = annotation.placemark.name;
    label.font = [UIFont systemFontOfSize:20];
    label.translatesAutoresizingMaskIntoConstraints = false;
    label.numberOfLines = 0;
    [view addSubview:label];

    UIButton *button = [self yesButton];
    [view addSubview:button];

    NSDictionary *views = NSDictionaryOfVariableBindings(label, button);

    [view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[label]|" options:0 metrics:nil views:views]];
    [view addConstraint:[NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:view attribute:NSLayoutAttributeCenterX multiplier:1 constant:0]];
    [view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[label]-[button]|" options:0 metrics:nil views:views]];

    return view;
}

- (UIButton *)yesButton {
    UIImage *image = [self yesButtonImage];

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.translatesAutoresizingMaskIntoConstraints = false; // use auto layout in this case
    [button setImage:image forState:UIControlStateNormal];
    [button addTarget:self action:@selector(didTapButton:) forControlEvents:UIControlEventPrimaryActionTriggered];

    return button;
}
Community
  • 1
  • 1