Google地图信息窗口根据内部内容resize

我使用这种方法创build自定义信息窗口- (UIView *)mapView:(GMSMapView *)mapView markerInfoWindow:(GMSMarker *)marker基于UIStoryboard使用Autolayout。 我预计部分内部视图将会因为实际的文本信息被接收而resize,信息窗口的最终大小将与IB的视图不同。

其实,结果我的InfoWindow视图尝试全屏大小,没有什么帮助解决这个问题。 玩autoresizingMask不会改变任何东西,与设置Hugging Priority相同的结果。 唯一的办法是设置一个固定大小的约束,我已经做了这个宽度。 但是对于高度,我需要根据内部内容的实际大小dynamic计算大小。

更新:从故事板添加屏幕截图

在这里输入图像说明

在这里输入图像说明

更新2 :带有2个滚动视图的示例testing,使用重写的方法intrinsicContentSize

 - (CGSize)intrinsicContentSize { [self layoutIfNeeded]; return self.contentSize; } 

内部UIScrollView通过所有4边连接到基本滚动视图 内部UIScrollView通过所有4边连接到基本滚动视图

内部UIScrollView只附加在顶部和左侧 内部UIScrollView只附加在顶部和左侧 示例testing视图层次结构 示例测试视图层次结构

正如你所看到的全屏幕根UIScrollView (蓝色边框)仍然存在。 而内部的UIScrollView (绿色)对它没有影响。 它仍然有全屏幕的大小

不幸的是,我发现的唯一方法是使用明确的框架,这需要手动计算,并且完全不使用Google Maps InfoWindow的Autolayout

我做了几个testing,以validation如何显示相同的视图作为UIWindow子视图,并发现行为是不同的。