点击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出现并且是透明的)但是,当动画完成时,它不再是透明的。
答案 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个控制器合并为一个。