簡體   English   中英

如何在不禁用clipsToBounds的情況下向MKMapView添加陰影

[英]How to add a drop shadow to an MKMapView without disabling clipsToBounds

嘗試向MKMapView的圖層添加陰影時出現問題,為了使陰影可見,我必須將視圖的clipsToBounds屬性設置為false。 但是,這樣做會導致地圖圖塊在視圖邊界之外繪制,與陰影重疊並切割了部分視圖。 結果看起來像這樣:

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擁有,因此自行觸摸通常不是一個好主意。 (這種情況很可能在以后的OS版本中以怪異的方式破壞,並以無法預測的方式表現(很有趣的是,它甚至對於新的iOS 6 3D地圖是否也適用)。支持OS X上的視圖,您根本不應該直接接觸該層(除非它是層托管視圖,但這是不同的討論)。

要在下方CALayer陰影,只需制作自己的新CALayer並在地圖下方CALayer陰影即可。 或者,將MKMapView嵌套為您自己的UIView的子視圖,然后將陰影添加到您的視圖中(不需要裁剪)。

您必須創建兩個視圖,一個用於陰影,另一個用於圓角。

更多信息在這里: UIView帶陰影的圓角

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM