我必须添加一个ImageView作为MapView的子视图。我不能通过代码来完成它,因为ImageView总是在mapView后面。我无法在IB中执行此操作,因为在文件的所有者中,UIImageView始终是对mapView的外部尊重(我尝试了几次)。我正在使用Xcode 4.5。我可以添加UIImageView作为MapView的子视图吗?
这是MapViewController.h中的代码
@property (nonatomic, strong) UIImageView *iphoneLegenda;
@property (nonatomic, strong)IBOutlet MKMapView *mapView;
MapViewController.m中的
@synthesize iphoneLegenda;
@synthesize mapView;
- (void)viewDidLoad
{
//.....
self.iphoneLegenda.frame = CGRectMake(self.mapView.bounds.origin.x,
self.mapView.bounds.origin.y, 200, 100);
//......
[self.mapView addSubview:self.iphoneLegenda];
[self.iphoneLegenda bringSubviewToFront:self.mapView];
//.....
}
答案 0 :(得分:3)
我认为AntonPalich和MashDup的答案是最好的方法。 要在mapView中添加子视图,您必须添加QuartzCore.framework,这是代码:
- (void)viewDidLoad
{
CALayer *layer = [CALayer layer];
layer.backgroundColor = [[UIColor whiteColor] CGColor];
layer.bounds = CGRectMake(mapView.frame.origin.x, mapView.frame.origin.y, 200, 100);
[[mapView layer] addSublayer:layer];
}
答案 1 :(得分:0)
如果您希望将imageview放在地图视图的顶部,请查看您使用的是xib。 mapview已经在视图上,只需像在mapview中一样在xib中添加imageview并将其链接起来。使xib中的alpha值为0(以后更好地用于动画)。然后在你的代码中,我假设你想要一个按钮或一些种类来打开它。 所以改变行有iboutlet。
@property (nonatomic, strong) IBOutlet UIImageView *iphoneLegenda;
然后采取行动淡化它:
[UIView animateWithDuration:0.5 animations:^{
[iphoneLengenda setAlpha:1.];
}];
不必混淆设置框架等。
答案 2 :(得分:0)
这个方案怎么样:
UIView
- MKMapView
- UIImageView
MKMapView与UIView的大小相同,UIImageView将始终位于顶部。