我正在处理自定义视图,该视图作为子视图添加到UIWindow。我想让自定义视图始终位于应用程序中的任何视图之上,用户可以交互自定义视图后面的任何视图。现在自定义视图在窗口中添加后出现在顶部但问题是自定义视图如果现在以模态方式呈现任何视图则消失。因此,每当我在自定义视图中添加任何内容时,请帮助我找到逻辑,然后我的自定义视图应该出现在新视图的前面。
答案 0 :(得分:0)
static const NSString * StickyView = @"StickyView";
-(void)displaySticky
{
if([[UIApplication sharedApplication].keyWindow.rootViewController.presentedViewController isKindOfClass:[UIAlertController class]])
return;
dispatch_async(dispatch_get_main_queue(), ^{
UIWindow *mainWindow = [UIApplication sharedApplication].keyWindow;
UIView *existingView = (UIView *)objc_getAssociatedObject(mainWindow, &StickyView);
if (existingView != nil)
{
[mainWindow bringSubviewToFront:existingView];
return;
}
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 150, 125)];
view.center = CGPointMake(mainWindow.bounds.size.width-150/2,mainWindow.bounds.size.height-125/2);
objc_setAssociatedObject (mainWindow, &StickyView, view, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
[mainWindow addSubview:view];
[mainWindow bringSubviewToFront:view];
});
}
现在你应该在' viewDidAppear'中调用该方法。您的所有ViewController类如下所示
[[Utils sharedInstance] displaySticky];
//假设您的单身人士课程的实例方法是' sharedInstance'