添加阴影的MKMapView
问题描述:
我有一个MapView类,我想添加它阴影效果,但我试过的方法不起作用:添加阴影的MKMapView
- (void)viewDidLoad {
[super viewDidLoad];
mapView.layer.shadowColor = [[UIColor blackColor] CGColor];
mapView.layer.shadowOffset = CGSizeMake(10.0f, 10.0f);
mapView.layer.shadowOpacity = 1.0f;
mapView.layer.shadowRadius = 10.0f;
}
我得到这个:
我做错了什么?
答
解决得益于:http://blog.amarkulo.com/create-rounded-uiviews-with-shadow
使用此代码:
[[mapView layer] setMasksToBounds:NO];
[[mapView layer] setShadowColor:[UIColor blackColor].CGColor];
[[mapView layer] setShadowOpacity:1.0f];
[[mapView layer] setShadowRadius:6.0f];
[[mapView layer] setShadowOffset:CGSizeMake(0, 3)];
答
另一种选择(实际上是提出的解决方案并没有为我工作,iOS版SDK 4.3)是封闭的MKMapView在一个UIView :
_mapContainer = [[UIView alloc] initWithFrame: CGRectMake (0.0f, 44.0f, 320.0f, container.frame.size.height - 44.0f)];
_mapContainer.autoresizingMask = UIViewAutoresizingFlexibleHeight;
_mapContainer.layer.masksToBounds = NO;
_mapContainer.layer.shadowColor = [UIColor blackColor].CGColor;
_mapContainer.layer.shadowOffset = CGSizeMake (0.0f, 10.0f);
_mapContainer.layer.shadowOpacity = 0.6f;
_mapContainer.layer.shadowRadius = 5.0f;
[container addSubview: _mapContainer];
[_mapContainer release];
_mapView = [[MKMapView alloc] initWithFrame: _mapContainer.bounds];
_mapView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
[_mapContainer addSubview: _mapView];
[_mapView release];
这种方式,您也可以动画_mapContainer的框架,仍然保持阴影中的正确位置。
在这里,您可以看到实际结果here,如果您是注册的Apple开发人员。