我正在像这样在谷歌地图上创建自定义信息窗口:
NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed"InfoView" owner:self options:nil];
InfoView *mainView = [subviewArray objectAtIndex:0];
UIView *subview = mainView.subviews[0];
//setup content
return subview;
这样它工作正常,但我不能添加任何约束,因为它会填满整个屏幕并变成空白。所以我决定不使用自动布局。
我的内容是几个标签一个接一个。在同样的情况下,文本不能适合单行,然后标签框应该增加。同时,还必须增加整个 View 框架,下面的 View 必须适当偏移。我已经制定了一种方法来做到这一点,除了信息窗口 View 框架本身之外,一切都在变化。在日志中,我可以看到框架发生了变化,但在屏幕上,它具有原始大小,并且文本在它之外。
我什至尝试只更改信息窗口框架,但仍然没有效果 - 它根本没有改变。
我也试过调用 [subview layoutIfNeeded] 和 [subview layoutSubviews] 。
那么,如何制作具有动态大小的信息窗口?
编辑:
@Milan 要求的完整代码:
- (UIView *_Nullable) mapViewGMSMapView *)mapView markerInfoContents: (GMSMarker *)marker {
NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed"ortView" owner:self options:nil];
PortView *mainView = [subviewArray objectAtIndex:0];
UIView *subview = mainView.subviews[0];
mainView.frame = CGRectMake(mainView.frame.origin.x, mainView.frame.origin.y, mainView.frame.size.width, mainView.frame.size.height + 40) //increase frame size doesn't work
mainView.titleLabel.text = portSzukany.name;
return subview;
}
Best Answer-推荐答案 strong>
您需要实现 GMSMapViewDelegate 并从以下方法返回信息 View :
- (UIView *GMS_NULLABLE_PTR)mapViewGMSMapView *)mapView markerInfoWindowGMSMarker *)marker;
根据对该方法的描述,“返回的 UIView 在任一维度上的边界不得大于 500 点。”
关于ios - 动态信息窗口大小 ios 谷歌地图,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/44672663/
|