在Google地图上加载标记的自定义信息窗口时,iOS应用会冻结

时间:2016-04-20 14:21:25

标签: ios swift google-maps-sdk-ios

我正在尝试在iOS应用上的Google Maps Marker上实现自定义信息窗口。 (例如,herehere完成。)

我为它创建了一个xib和一个UIView类。它被称为CustomInfoWindow.xib,类是CustomInfoWindow.swift

我的自定义信息窗口目前是空白的,即我尚未向我的xib添加任何UIControl。我还没有在我的类文件中添加任何代码。

CustomInfoWindow.swift文件基本上如下:

import UIKit
class CustomInfoWindow: UIView {}

在我的ViewController for my maps中,我的markerInfoWindow方法如下:

func mapView(mapView: GMSMapView!, markerInfoWindow marker: GMSMarker!) -> UIView! {
    let customInfoWindow = NSBundle.mainBundle().loadNibNamed("CustomInfoWindow", owner: self, options: nil)[0] as! CustomInfoWindow

    return customInfoWindow
}

当我运行代码并点击其中一个标记时,空白CustomInfoWindow显示正常。

奇怪的是,我将任何UI元素添加到Interface Builder中的CustomInfoWindow.xib并再次运行我的应用程序然后突然点击应用程序冻结的标记时。 (例如,当我向UILabel添加UIImageCustomInfoWindow.xib时。)如果我删除了UI元素,那么空白笔尖在标记上显示正常。

如果我通过在某些View Controller上将其添加为子视图来测试我的笔尖,那么它可以通过我的UILabelUIImage加载。但是,当我在markerInfoWindow应用冻结中使用相同的笔尖时。

问题是什么?

更新: 此问题发生在适用于iOS的Google Maps SDK 1.13版本上,结果是bug on that version

2 个答案:

答案 0 :(得分:4)

我有同样的问题。这是GoogleMaps的错误! 在版本1.13.0中冻结apperrs。

您可以使用:

pod 'GoogleMaps', '1.12.3'

答案 1 :(得分:1)

找到1.13

的正确解决方法

将以下代码添加到子类CustomInfoWindow

override func didMoveToSuperview() {
        superview?.autoresizesSubviews = false;
}

来源:https://kivy.org/docs/tutorials/firstwidget.html