0

我有自定義註釋,它的calloutbubble具有視圖,其中表的高度爲200.
但是,在標註氣泡中設置它時,不會影響標註的大小泡沫
我該如何實現這一目標?
這裏是我的代碼
更改MapView中的CustomCallout氣泡高度 - iOS

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

回答

0

請參考此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; 
} 
+0

我已經試過這個。這是需要工作的。 –