我需要UIAlertController
标题,说明和UIActivityIndicatorView
。我有一组需要在webservice上下载的对象,向用户显示反馈我创建了一个UIAlertController
并修改了描述conforms下载完成并开始,在serie中。所以,当我展示自定义的UIAlertController
时,该视图会占用我应用的所有屏幕!我想只显示我在故事板上创建的小方框,如弹出窗口,以通知用户下载进度。
我试过这个:
Alerta.swift
class Alerta: UIViewController {
@IBOutlet weak var indicatorView: UIActivityIndicatorView!
@IBOutlet weak var lblTitle: UILabel!
@IBOutlet weak var lblDesc: UILabel!
var titulo: String?
var descricao: String?
override func viewDidLoad() {
self.lblTitle.text = titulo
self.lblDesc.text = descricao
indicatorView.startAnimating()
}
override func viewWillDisappear(_ animated: Bool) {
indicatorView.stopAnimating()
}
}
为了测试我确实写了一些延迟的代码。
ViewControllerMain.swift
let customAlert = self.storyboard?.instantiateViewController(withIdentifier: "waitView") as! Alerta
customAlert.providesPresentationContextTransitionStyle = true
customAlert.definesPresentationContext = true
customAlert.modalPresentationStyle = UIModalPresentationStyle.overCurrentContext
customAlert.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
customAlert.titulo = "Título"
customAlert.descricao = "Descrição 1"
self.present(customAlert, animated: true, completion: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(2000)) {
customAlert.lblDesc.text = "Descricao 2"
}
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(4000)) {
self.dismiss(animated: true, completion: nil)
}
结果(糟糕):
答案 0 :(得分:2)
您无法通过简单的过流背景演示来完成您所描述的内容。当前上下文是呈现视图控制器 - 此外,您的故事板主视图比您想要的视图大得多,并且运行时无法神奇地猜测视图的唯一相关部分是阴影部分。
如果你真的希望这是一个呈现的视图控制器,你需要使用自定义演示文稿并提供你自己的演示控制器,它将设置所呈现视图的框架。
但是,我建议您只创建并显示视图 - 在这个简单的场景中不需要一个成熟的呈现视图控制器。