Sim*_*n H 1 uiprogressview ios swift uialertcontroller
该文件说,继承UIAlertController是坏
UIAlertController类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不能修改。
那么,推荐一种不仅显示标题,消息和某些按钮,还显示其他东西(例如ProgressBars,List等)的警报的方法是什么?
在我的特殊情况下,我希望有两种不同的警报,一种显示进度条,另一种显示错误消息列表。
目前,我正在尝试手动添加ProgressView并设置约束:
func getProgressAlert(onAbort: @escaping () -> ()) -> UIAlertController {
let alert = UIAlertController(title: "Test", message: "Test", preferredStyle: .alert)
let abort = UIAlertAction (title: "Abort", style: UIAlertActionStyle.cancel) { _ in
onAbort()
}
alert.addAction(abort)
let margin:CGFloat = 8.0
let rect = CGRect(x:margin, y:72.0, width: alert.view.frame.width - margin * 2.0 , height:2.0)
self.progressView = UIProgressView(frame: rect)
self.progressView!.setProgress(0.0, animated: false)
self.progressView!.tintColor = UIColor.blue
alert.view.addSubview(self.progressView!)
self.progressView!.translatesAutoresizingMaskIntoConstraints = false
self.progressView!.widthAnchor.constraint(equalTo: alert.view.widthAnchor, multiplier: 1.0).isActive = true
self.progressView!.heightAnchor.constraint(equalToConstant: 5.0).isActive = true
self.progressView!.topAnchor.constraint(equalTo: alert.view.topAnchor).isActive = true
self.progressView!.leftAnchor.constraint(equalTo: alert.view.leftAnchor).isActive = true
return alert
}
Run Code Online (Sandbox Code Playgroud)
我不认为这是应该这样做的方式,因为手动定义约束很容易在不同设备上出错。例如,当前代码仅在警报视图的顶部显示进度条,但我希望将其显示在消息和中止按钮之间。
此类的视图层次结构是私有的,不能修改。
这几乎是该API棺材中的钉子。如果您尝试对其进行破解,则尝试在不同的iOS版本上支持它会给您带来很多痛苦。
如果要在警报中具有自定义控件,则必须编写自定义UIViewController子类并在添加新功能的同时尽可能地模仿API(如果您不想这样做,则GitHub上将提供示例)。
一些例子:
| 归档时间: |
|
| 查看次数: |
7057 次 |
| 最近记录: |