2011-01-24 2 views
5

У меня есть MapView, и я хочу, чтобы добавить его в Dropshadow, но метод, который я пытался не работает:Добавление теней к 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; 
} 

Я получаю это:

example

Я что-то не так?

ответ

9

Устранены благодаря: 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)]; 
2

Другой вариант (на самом деле предлагаемое решение не работает для меня, 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.

Смежные вопросы