iOS- 添加UIWindow蒙版

來源:互聯網
上載者:User

開發中經常碰到需要添加一個半透明的蒙版,比如各類提示彈窗等。

UIWindow圖層上添加蒙版

優先順序

例如蒙版也可添加到self.navigationController.view圖層上或者self.tabBarController.view圖層上

self.view < self.navigationController.view < self.tabBarController.view < UIWindow


UIWindow:一般作為UIView的容器

 應用情境

    當需要將某些控制項顯示到最上層時就可以建立一個window,然後將空間添加到window上

    支付寶、記賬類軟體認證介面(手勢解鎖)大部分都是用UIWindow做的

 注意

    1.一般情況下不要隨意建立window,不要濫用,因為只要建立就會自動添加到介面上(不用addsubview。。。),那麼如果濫用window會導致應用程式的層級結構混亂

    2.window是有層級的,層級越高就顯示在越頂層(鍵盤層級最高)

    預設有3個層級:UIWindowLevelNormal(0.0) < UIWindowLevelAlert(1000.0) < UIWindowLevelStatusBar(2000.0)

    也可自訂window.windowLevel = 4000.0;

 UIWindow特點

    只要建立就會自動添加到介面上

    系統彈出UIAlertView、彈出鍵盤、來簡訊、來電、電量不足等也是用的UIWindow

    如果需要window監聽點擊事件需要設定frame,因為window建立後沒有frame

        UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    移除window可在點擊方法裡直接 window = nil;

 

//cover為frame是[UIScreen mainScreen].bounds的半透明或透明色button

UIWindow *window = [UIApplication sharedApplication].keyWindow;

[window addSubview:cover];


上個案例,自訂的一個指紋鎖彈窗,其中touchidView為xib自訂的view樣式,具體可根據實際需要自訂以及添加代理等方法。

#pragma mark - 添加touchIDView彈窗

- (void)popCoverview{

    

    //設定蒙版

    self.coverView = [[UIViewalloc]initWithFrame:[UIScreenmainScreen].bounds];

    self.coverView.backgroundColor = [UIColorblackColor];

    self.coverView.alpha =0.6;

    //添加蒙版上彈窗視圖

    self.touchidView = [[NSBundlemainBundle] loadNibNamed:@"DDTouchidView"owner:selfoptions:nil].lastObject;

    self.touchidView.center =self.coverView.center;

    self.touchidView.delegate =self;

    

    //實現彈出方法

    UIWindow *window = [UIApplicationsharedApplication].keyWindow;

    window.windowLevel =UIWindowLevelNormal;

    

    [window addSubview:self.coverView];

    [window addSubview:self.touchidView];

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.