我有这堂课:
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 :(得分:0)
更改您要返回的视图:
制作一个"容器"与视图控制器视图具有相同框架的视图。给这个观点一个"清楚"背景
制作"背景"视图,与"容器相同的大小"查看并将其添加到容器中。给这个视图一个黑色背景和一个alpha,比如0.4。
现在将您正在构建的视图放在"等待"方法,并将其添加到"容器" view(不是背景视图,这应该是背景视图的兄弟,否则你的警报也会透明)。
确保您的视图禁用了所有用户互动(可能只需要在"容器"视图中禁用它。)
这为您提供了一个覆盖整个屏幕的容器视图,它有2个孩子:相同大小的透明背景,以及您当前的#34;等待"警报事。
现在,如果您添加"容器"查看您的视图控制器的视图,用户只能触摸无效的容器视图。
(请记住,这并不能处理屏幕旋转......如果需要,您必须自己动手。)