MKMapView顶部的透明UIView

时间:2012-06-15 07:25:19

标签: ios uiview mkmapview

点击MKMapView标注气泡时,我会触发

DetailsViewController *details = [[DetailsViewController alloc] initWithNibName:@"DetailsViewController" bundle:nil];
[self presentModalViewController:details animated:YES];
[details release];

在DetailsViewController中,我将背景设置为透明:

self.view.backgroundColor = [UIColor colorWithHue:0.0 saturation:0.0 brightness:1.0 alpha:0.2];

当我点击标注时,我看到动画开始(DetailsView出现并且是透明的)但是,当动画完成时,它不再是透明的。

1 个答案:

答案 0 :(得分:3)

问题在于,当您呈现新视图时,它会控制屏幕,因此您的背景视图会消失。

这种行为是正确的,因为假设您一直在打开新视图并堆叠它们,操作系统无法在后台保存您的所有视图!它只是让它消失了。

您可以将视图显示在第一个视图的顶部,而不是让新的视图控制器出现并控制屏幕,而不是让您的视图显示在第一个视图之上。

尝试这样的事情,让我知道它是怎么回事(我刚刚在这里制作了代码,所以我不能向你保证它的工作,但你肯定会得到这个想法):

   DetailsViewController *details = [[DetailsViewController alloc] initWithNibName:@"DetailsViewController" bundle:nil];
    details.view.frame = self.view.frame;
    details.view.backgroundColor = [UIColor colorWithHue:0.0 saturation:0.0 brightness:1.0 alpha:0.2];
    [self.view addSubview:details.view];
    [details release];

我之前已经完成了这项工作并且可能,但我无法向您保证应用的稳定性。

其他“清洁”解决方案,正在使您的新视图成为旧视图的一部分。您可以将其设置在底部(隐藏),以便用户不会看到它,并且当您需要它时,您可以使用动画将其放在主屏幕中。问题是你将把2个控制器合并为一个。