在地图标注上设置UIButton的背景

时间:2015-10-26 05:51:51

标签: objective-c uibutton mkannotationview callouts

您好我正在尝试在附加到我的MapView MKAnnotation标注视图的详细信息披露UIButton上设置背景图像。检查stackoverflow是否有一致的示例如何设置它,但它似乎不适用于我的标注UIButton。我的问题是,这不起作用,仅仅是因为mapview还是我错过了其他的东西? 这是我的代码:

// If an existing pin view was not available, create one.
            pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"CustomPinAnnotationView"];
            pinView.canShowCallout = YES;
            pinView.image = [UIImage imageNamed:@"Tch4"];
            //pinView.calloutOffset = CGPointMake(0, 32);
            pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
            UIImage *btnImage = [UIImage imageNamed:@"4stars"];
            [pinView.rightCalloutAccessoryView setBackgroundImage:btnImage forState:UIControlStateNormal];

我在最后一行收到错误。错误是:没有UIView的可见界面声明选择器' setbackgroundimage:forstate'

感谢您对此的帮助

2 个答案:

答案 0 :(得分:1)

您的问题是rightCalloutAccessoryView返回UIView个实例。并且UIView不响应setBackgroundImage:forState:方法。

您要找的是添加UIButton而不是这样的内容:

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeCustom];
infoButton.frame = CGRectMake(0, 0, 32, 32); // Set your own frame 
[infoButton setBackgroundImage:btnImage forState:UIControlStateNormal];
[infoButton setBackgroundImage:btnImage forState:UIControlStateSelected];
pinView.rightCalloutAccessoryView = infoButton;

答案 1 :(得分:0)

如果您的类型按钮DetailDisclosure,则无法设置背景图像。 你可以将extraubview图像添加到rightCalloutAccessoryView但没有按钮..

所以,如果您仍然使用typebutton DetailDisclosure,则无法设置背景