2017-09-09 95 views
-3

我工作的自定義視圖作爲子視圖添加到UIWindow中。我希望將該自定義視圖始終放在應用中的任何視圖之上,並且用戶可以與自定義視圖背後的任何視圖進行交互。現在,自定義視圖在窗口中添加後顯示在頂部,但問題是自定義視圖消失,如果現在任何視圖呈現模態。所以請每當我添加自定義視圖時找到邏輯,然後我的自定義視圖應該出現在新視圖的前面。如何將uiview始終放在ios的底部角落

回答

0
  1. 請一個單獨的類可以被命名爲 'utils的'
  2. 將下面的方法爲 'utils的' 類(你應該自定義 '視圖' 對象的要求。

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]; 

     }); 

     } 
  1. 現在,您應該在所有ViewController類的'viewDidAppear'中調用該方法,如下所示

    [[Utils sharedInstance] displaySticky]; //假設你的單例類的實例方法是 'sharedInstance'