0

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

3 回答 3

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];
}
于 2012-11-07T11:55:06.330 回答
0

如果您希望图像视图位于地图视图的顶部,就像您使用 xib 一样。mapview 已经在一个视图上,只需在 xib 中添加 imageview 就像您为 mapview 所做的一样并将其链接起来。使该 alpha 在 xib 中具有 0(以后更适合动画)。然后在您的代码中,我假设您想要一个按钮或某种按钮来打开它。所以换线有iboutlet。

@property (nonatomic, strong) IBOutlet UIImageView *iphoneLegenda;

然后是淡入淡出的动作:

[UIView animateWithDuration:0.5 animations:^{
        [iphoneLengenda setAlpha:1.];
    }];

不必乱设置框架等。

于 2012-11-07T11:05:04.187 回答
0

这个方案怎么样:

UIView
 - MKMapView
 - UIImageView

MKMapView 将与 UIView 大小相同,并且 UIImageView 将始终位于顶部。

于 2012-11-07T11:16:55.190 回答