IOS:创建全屏';覆盖层';UIView(单触式)
我在navigationcontroller中有一个视图,并希望创建一个“完整(应用程序)屏幕”覆盖,其中说明了一些关于用户应该做什么的内容。我已经在其他应用程序上看到了这一点,并且运行良好。我正在尝试下面的方法,但内容最终位于我的navcontroller标题下。调查讨论将矩形转换为“窗口级别”位置等,但它仍然位于下方 除了我在下面的微弱尝试,还有其他选择吗?或者链接到一个样本也很好 谢谢IOS:创建全屏';覆盖层';UIView(单触式),ios,xamarin.ios,Ios,Xamarin.ios,我在navigationcontroller中有一个视图,并希望创建一个“完整(应用程序)屏幕”覆盖,其中说明了一些关于用户应该做什么的内容。我已经在其他应用程序上看到了这一点,并且运行良好。我正在尝试下面的方法,但内容最终位于我的navcontroller标题下。调查讨论将矩形转换为“窗口级别”位置等,但它仍然位于下方 除了我在下面的微弱尝试,还有其他选择吗?或者链接到一个样本也很好 谢谢 HelpOverlayUIView _overlayView; public void Pre
HelpOverlayUIView _overlayView;
public void PresentHelpOverlay()
{
RectangleF windowFullFrame = new RectangleF(0,0,UIScreen.MainScreen.Bounds.Width,UIScreen.MainScreen.Bounds.Height);
// Conversion?
//[aView convertPoint:localPosition toView:nil];
RectangleF overlayFrame = View.ConvertRectFromView(windowFullFrame ,null);
// Clear old one if it exists.
if (_overlayView != null) _overlayView = null;
// Instantiate popup view and add to (in this case the 2nd tier view). This is in an abstract class, if in a concrete one it'd normally just be View.Add
_overlayView = new HelpOverlayUIView(this, overlayFrame);
// tried th, didn't change it.
// this.WantsFullScreenLayout = true;
// _childView.BringSubviewToFront(_overlayView);
_overlayView.Alpha = 0;
_childView.Add (_overlayView);
// Setup event to close without doing anything.
_overlayView.CloseView += (sender, e) => {
Console.WriteLine ("close called");
// animate modal popup's departure
UIView.Animate (
0.5f,
() => {
// Anim Code
_overlayView.Alpha = 0;
},
null
);
};
// animate modal popup's arrival
UIView.Animate (
0.5f,
() => {
// Anim Code
_overlayView.Alpha = 1;
},
null
);
}
(该视图只是一个UIView,带有Draw()方法的重载,该方法将文本等放置到视图中)您可以将_overlayView添加到视图层次结构中更高的位置,例如NavigationViewController。如果您的NavigationViewController被设置为您的RootViewController(不管实际是什么),那么您可以尝试这样做
((AppDelegate)UIApplication.SharedApplication.Delegate).Window.RootViewController.Add(_overlayView);
您也可以像这样将子视图带到前面,但这只是该视图的前面,而不是所有视图的前面(这不是您真正想要的,除非_childView是您的NavigationViewController)
您可以将_overlayView添加到视图层次结构中更高的位置,例如NavigationViewController。如果您的NavigationViewController被设置为您的RootViewController(不管实际是什么),那么您可以尝试这样做
((AppDelegate)UIApplication.SharedApplication.Delegate).Window.RootViewController.Add(_overlayView);
您也可以像这样将子视图带到前面,但这只是该视图的前面,而不是所有视图的前面(这不是您真正想要的,除非_childView是您的NavigationViewController)
几个月后,我只想补充一点。确保上面的“窗口”带有小写字母“w”。确实有一个大写字母W的窗口,但在我的例子中,它抛出了一个例外。几个月后,我只想补充一点。确保上面的“窗口”带有小写字母“w”。确实有一个大写字母W的窗口,但在我的例子中,它抛出了一个例外。