如何在ios中将uiview始终放置在右下角

如何在ios中将uiview始终放置在右下角,ios,iphone,swift,Ios,Iphone,Swift,我正在处理作为子视图添加到UIWindow的自定义视图。我想让自定义视图始终位于应用程序中任何视图的顶部,用户可以在自定义视图后面与任何视图交互。现在,自定义视图在添加到窗口中后显示在顶部,但问题是,若现在以模式显示任何视图,则自定义视图将消失。所以,每次在我的自定义视图上添加任何内容时,请帮助我找到逻辑,然后我的自定义视图应该位于新视图的前面 使单个类命名为“Utils” 将下面的方法放入“Utils”类(您应该根据需要自定义“view”对象) static const NSString*St

我正在处理作为子视图添加到UIWindow的自定义视图。我想让自定义视图始终位于应用程序中任何视图的顶部,用户可以在自定义视图后面与任何视图交互。现在,自定义视图在添加到窗口中后显示在顶部,但问题是,若现在以模式显示任何视图,则自定义视图将消失。所以,每次在我的自定义视图上添加任何内容时,请帮助我找到逻辑,然后我的自定义视图应该位于新视图的前面

  • 使单个类命名为“Utils”
  • 将下面的方法放入“Utils”类(您应该根据需要自定义“view”对象)
  • static const NSString*StickyView=@“StickyView”

  • 现在,您应该在所有ViewController类的“ViewDidDisplay”中调用该方法,如下所示

    [[Utils sharedInstance]displaySticky];
    //假设您的单例类的实例方法是“sharedInstance”

  • -(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];
    
            });
    
            }