我试图通过SDWebImage加载放置在InfoWindow中的图像。
首次打开此InfoWindow mainLogoImageView时只放置占位符。关于第二次加载的图像。问题是图像无法在InfoWindow首次打开时加载(它不取决于我等待加载图像的时间)
func mapView(mapView: GMSMapView!, markerInfoWindow marker: GMSMarker!) -> UIView! {
var infoWindow : CustomInfoWindow = NSBundle.mainBundle().loadNibNamed("CustomInfoWindow", owner: self, options: nil)[0] as CustomInfoWindow
infoWindow.mainLogoImageView.sd_setImageWithURL(NSURL(string: self.sharedManager.myModel[0].img_logo), placeholderImage: UIImage(named: "logo_placeholder.png"))
return infoWindow
}
感谢您的帮助
答案 0 :(得分:3)
在mapView函数中插入marker.tracksInfoWindowChanges = true;
func mapView(mapView: GMSMapView!, markerInfoWindow marker: GMSMarker!) UIView! {
marker.tracksInfoWindowChanges = true;
var infoWindow : CustomInfoWindow = NSBundle.mainBundle().loadNibNamed("CustomInfoWindow", owner: self, options: nil)[0] as CustomInfoWindow
infoWindow.mainLogoImageView.sd_setImageWithURL(NSURL(string: self.sharedManager.myModel[0].img_logo), placeholderImage: UIImage(named: "logo_placeholder.png"))
return infoWindow
}
答案 1 :(得分:1)
我想我可能会找到解决问题的方法。我在Objective-C中编写了我的代码,希望你能把它翻译成Swift。
如果您想获得完成回调,则可以尝试使用SDWebImageMannager
的{{1}}方法。
但是为了让图像第一次显示,你需要有一个实例变量。
首先,您需要声明一个索引计数器实例变量:
在Swift中 downloadImageWithURL
可能是int counter = 0;
然后在您的委托方法中,您可以执行以下操作:
var counter = 0;