1

当我尝试向MKMapView' 图层添加投影时遇到问题,为了使阴影可见,我必须将视图的clipsToBounds属性设置为 false。但是,这样做会导致地图图块在视图边界之外绘制,重叠阴影并切割部分视图。结果如下所示:

iPhone 5.1 模拟器中的错误截图

我想知道是否有一种方法可以在不禁用边界裁剪的情况下绘制阴影,或者在没有这种丑陋的视觉错误的情况下让阴影出现。我设置阴影的代码如下所示:

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;
4

2 回答 2

4

由于该层由 拥有MKMapView,因此您自己触摸它通常不是一个好主意。(这种事情很可能在以后的操作系统版本中以奇怪的方式破坏,并且以不可预测的方式运行(看看这是否甚至适用于新的 iOS 6 3D 地图会很有趣)。使用 layer-在 OS X 上支持视图,您根本不应该直接接触图层(除非它是图层托管视图,但这是一个不同的讨论))

要获得下方的阴影,只需在地图下方添加一个阴影即可创建自己的新CALayer阴影。或者将 嵌套MKMapView为您自己的子视图UIView,并将阴影添加到您的视图中(不需要剪辑)。

于 2012-07-12T08:56:05.613 回答
2

您必须创建两个视图,一个用于阴影,另一个用于圆角。

更多信息:UIView 带阴影的圆角

于 2012-07-12T09:02:47.587 回答