OGeek|极客世界-中国程序员成长平台

标题: ios - 动态信息窗口大小 ios 谷歌地图 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 01:46
标题: ios - 动态信息窗口大小 ios 谷歌地图

我正在像这样在谷歌地图上创建自定义信息窗口:

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-推荐答案


您需要实现 GMSMapViewDelegate 并从以下方法返回信息 View :

- (UIView *GMS_NULLABLE_PTR)mapViewGMSMapView *)mapView markerInfoWindowGMSMarker *)marker;

根据对该方法的描述,“返回的 UIView 在任一维度上的边界不得大于 500 点。”

关于ios - 动态信息窗口大小 ios 谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44672663/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4