MKAnnotationView中的detailCalloutAccessoryView约束

时间:2016-02-27 12:50:22

标签: ios constraints mapkit mkannotationview

我在调整我以编程方式添加的detailCalloutAccessoryView时遇到了一些问题。

这是视图的代码

HCSStarRatingView *annotationRating = [[HCSStarRatingView alloc] init];
annotationView.detailCalloutAccessoryView = annotationRating;

我尝试使用initWithFrame初始化视图,但不知怎的,它没有工作,我最终得到了这个。

First Try

然后我发现我必须以编程方式添加NSLayoutConstraint以正确调整视图大小,所以我为约束添加了这段代码。

NSLayoutConstraint *width = [NSLayoutConstraint constraintWithItem:annotationRating attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:80];
NSLayoutConstraint *height = [NSLayoutConstraint constraintWithItem:annotationRating attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:45];
[annotationRating addConstraint:width];
[annotationRating addConstraint:height];

视图现在看起来像这样

Getting closer

现在我想摆脱它周围的空白区域。我想我必须添加一个顶部和底部约束,但我不知道该怎么做,因为我不知道我必须涉及哪些项目。

1 个答案:

答案 0 :(得分:0)

多余的空格是您选择的height的函数。你的图像宽度大约是它的5倍,但是你要求将它渲染到一个80 x 45点的盒子里(即一个高度超过宽度的一半,而不是五分之一的视图)。如果您选择图像视图的尺寸以匹配(调整比例)图像的大小,您会得到更多类似的内容:

enter image description here

正如您所看到的,通过明智地选择宽度和高度,将比您的示例中的空白更少。请注意,您无法控制的细节附件视图之间存在一些固有的空白,但通过确保正确设置宽度和高度,您可以将其减少到这些最小值。