当我尝试向MKMapView
的图层添加投影时,我遇到了问题,为了使阴影可见,我必须将视图的clipsToBounds
属性设置为false 。但是,这样做会导致地图图块在视图边界外绘制,与阴影重叠并切割视图的某些部分。结果看起来像这样:
我想知道是否有一种方法可以在不禁用边界裁剪的情况下绘制阴影,或者在没有这种丑陋的视觉错误的情况下显示投影。我设置投影的代码如下所示:
self.mapView.layer.borderWidth = 5.0;
self.mapView.layer.borderColor = [[UIColor whiteColor] CGColor];
self.mapView.layer.shadowOffset = CGSizeMake(0.0, 0.0);
self.mapView.layer.shadowColor = [[UIColor blackColor] CGColor];
self.mapView.layer.shadowRadius = 5.0;
self.mapView.layer.shadowOpacity = 0.2;
self.mapView.clipsToBounds = NO;
答案 0 :(得分:4)
由于该图层归MKMapView
所有,因此自己触摸它通常不是一个好主意。 (这种情况可能会在以后的操作系统版本中以奇怪的方式破解,并以不可预测的方式运行(看看它是否适用于新的iOS 6 3D地图会很有趣)。在OS X上支持视图,你根本不应该直接触摸图层(除非它是图层托管视图,但这是一个不同的讨论))
要获得下方的阴影,只需创建自己的新CALayer
,并在地图下方放置阴影。或者将MKMapView
嵌套为您自己的UIView
的子视图,并将阴影添加到您的视图中(不需要裁剪)。
答案 1 :(得分:2)
您必须创建两个视图,一个用于阴影,另一个用于圆角。
此处有更多信息:UIView Round Corners with Shadow