2016-06-07 19 views
0

我有這個類:框架上的ViewController

extension UIViewController { 
    func waiting() -> UIView{ 
     let strLabel = UILabel(frame: CGRect(x: 50, y: 0, width: 200, height: 50)) 
     strLabel.text = "Aguarde..." 
     strLabel.textColor = UIColor.whiteColor() 
     let messageFrame = UIView(frame: CGRect(x: view.frame.midX - 90, y: view.frame.midY - 25 , width: 180, height: 50)) 
     messageFrame.layer.cornerRadius = 15 
     messageFrame.backgroundColor = UIColor(white: 0, alpha: 0.40) 
     let activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.White) 
     activityIndicator.frame = CGRect(x: 0, y: 0, width: 50, height: 50) 
     activityIndicator.startAnimating() 
     messageFrame.addSubview(activityIndicator) 
     messageFrame.addSubview(strLabel) 
     view.addSubview(messageFrame) 

     return messageFrame 
    } 
} 

當我需要使用此類我使用:

class MyController: UIViewController{ 
    .... 

    func x(){ 
    let messageFrame = waiting() 
    //my code 
    messageFrame.removeFromSuperview() 
    } 
} 

問題是,當,如果我在任何地方摸我的應用程序這個框架顯示幀被隱藏。我需要這個框架時,顯示其他選項保持禁用,當我完成框架,應用程序的選項再次啓用。我該怎麼做?

+0

幫助全 - http://stackoverflow.com/questions/27975321/how-做-I-展示和或隱藏-A-子視圖 - 使用 - 迅速 –

回答

0

更改要返回位的觀點:

  1. 使具有相同的幀作爲視圖控制器的視圖中的「容器」的說法。給這個觀點一個「清晰」的背景。

  2. 製作一個「背景」視圖,大小與「容器」視圖相同並將其添加到容器中。給這個觀點一個黑色的背景和0.4的α。

  3. 現在把你目前在你的「等待」方法中建立的視圖添加到「容器」視圖中(而不是背景視圖,這應該是背景視圖的兄弟,否則你的警報也將是透明的)。

  4. 確保您的視圖禁用了所有的用戶交互功能(可能只需要在「容器」視圖中將其禁用)。

這給你一個覆蓋整個屏幕的容器視圖,它有兩個孩子:相同大小的透明背景和當前的「等待」警報。

現在,如果將「容器」視圖添加到視圖控制器的視圖中,用戶只能觸摸不執行任何操作的容器視圖。

(請記住,這不處理屏幕旋轉......你將不得不如果需要的話自己做。)