在新的iOS 10版本中,我注意到我的自定义GMSMarker
视图呈现的方式与以前不同。我目前使用的是谷歌地图2.10,这是最新版本。
我的设置
首先,我为此示例以非常基本的方式创建了GMSMarker
。
GMSMarker *marker = [GMSMarker markerWithPosition:initialPosition];
marker.appearAnimation = kGMSMarkerAnimationNone;
marker.tracksViewChanges = NO;
marker.iconView = markerView;
marker.groundAnchor = CGPointMake(0.5, 0.5);
marker.map = self.mapView;
在上面的代码中,我创建了GMSMarker
并为其分配了markerView
,这是我编写的自定义UIView
子类。该实现位于下方,称为GLMarkerView
。切换语言,它将在Swift 3.0中。
@objc class GLMarkerView: UIView {
init(store: GLStore?) {
let circleFrame = CGRect(x: 0, y: 0, width: 40.0, height: 40.0)
super.init(frame: circleFrame)
backgroundColor = UIColor.red.withAlphaComponent(0.4)
layer.cornerRadius = 20.0
isOpaque = false
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
结果
所以上面的所有内容都是一个非常简单的布局,以确保我没有做任何导致此问题的特定内容。根据上面的代码,我应该看到GMSMapView
上的标记,它们应该是半透明的红色圆圈。在iOS 9及更低版本上,这非常有效。我得到以下结果:
What the Map looks like on iOS 9
然而,当我在iOS 10上运行完全相同的代码时,我得到以下视图:
What the Map looks like on iOS 10
问题
出于某种原因,渲染中添加了这种较暗的背景,我不知道它来自哪里。执行查看调试,将UIView
更改为设置isOpaque = false
。尝试了很多东西来正确渲染它。
我注意到的一件事是,影响这不仅仅是透明度。如果我使用白色背景运行相同的代码,则圆圈的边框会出现奇怪的抗锯齿问题。
如果有人看到过这个问题并且知道修复它的方法,那么任何帮助都会得到更多的赞赏。如果您需要有关此问题的更多信息或对实施有任何疑问,请随时提出,我会尽快回复。提前谢谢!