一个MapView的UIImageView子视图

时间:2012-11-07 10:54:10

标签: ios uiimageview mkmapview addsubview

我必须添加一个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];
  //.....
}

3 个答案:

答案 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将始终位于顶部。