iphone - 如何在不禁用 clipsToBounds 的情况下向 MKMapView 添加阴影

标签 iphone ios mkmapview calayer

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

A screenshot of the bug taken in the iPhone 5.1 Simulator

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

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;

最佳答案

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

要在下面获得阴影,只需制作自己的新 CALayer阴影位于 map 下方。或者嵌套 MKMapView作为您自己的 subview UIView , 并将阴影添加到您的 View 中(不需要剪辑)。

关于iphone - 如何在不禁用 clipsToBounds 的情况下向 MKMapView 添加阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445709/

相关文章:

iphone - 创建一个自定义 View 来替换 UINavigationBar

iphone - 在 GCD block 中绘制图像时卡顿

iphone - 在 iPhone 应用程序中隐藏已开发的 iPad 类

iphone - 在 mailcomposer 中向 html 正文添加新行

ios - 将 Set<CustomObject> 存储到 UserDefaults

ios - 第一次尝试时 map 未以注释图钉为中心

ios - 使用 RestKit 0.20.x 下载二进制文件

ios - 如何在xcode中通过调用栈查找相关代码?

ios - 在 UIView 中加载 MKMapView

objective-c - iOS7.1 MKMapView selectAnnotation问题