在具有透明背景的 Alert ViewController 中心添加图像
Posted
技术标签:
【中文标题】在具有透明背景的 Alert ViewController 中心添加图像【英文标题】:Add image on center of Alert ViewController with transparent background 【发布时间】:2017-03-23 10:18:42 【问题描述】:如何在警报 viewController 的中心显示图像,警报 viewController 的背景是透明的。 我写了以下代码。
let image = UIImage(named: "ic_no_data")
let imageView = UIImageView(frame: CGRectMake(220, 10, 40, 40)
let alertMessage = UIAlertController(title: "image", message: "", preferredStyle: .Alert)
let backView = alertMessage.view.subviews.last?.subviews.last
backView?.layer.cornerRadius = 10.0
backView?.backgroundColor = UIColor.lightGrayColor()
alertMessage.view.addSubview(imageView)
let action = UIAlertAction(title:"", style: .Cancel, handler: nil)
action.setValue(image, forKey: "image")
alertMessage .addAction(action)
self.presentViewController(alertMessage, animated: true, completion: nil)
看起来像这样。
请帮我解决这个问题,谢谢大家。
【问题讨论】:
【参考方案1】:UIAlertController 不支持视图层次结构中的此类更改,您最好使用模仿 UIAlertController 行为的自定义可扩展组件。 UIAlertController 的问题在于你不知道 Apple 将如何在下一个 ios 版本中更改其视图层次结构。而且每次他们更改某些内容时,您都必须为特定版本的 iOS 添加代码,从可维护性的角度来看,这确实很糟糕。
例如 CustomIOSAlertView:https://github.com/wimagguc/ios-custom-alertview。
【讨论】:
【参考方案2】:您可以将 imageView 的引用存储在 alertMessage 中,并且在完成当前 viewController 后,您将获得警报视图的确切大小,因此您可以根据当前警报 rect 调整图像。
试试这个代码在 swift3 中:
self.present(alertMessage, animated: true, completion:
var frame = self.alertMessage.view.frame
frame.origin = CGPoint(x: 0, y: 0) // add your location
self.imageView.frame = frame
)
【讨论】:
它说“viewController 没有成员存在”。 @KushalShrestha 代码在 swift 3 中,我更新了答案以上是关于在具有透明背景的 Alert ViewController 中心添加图像的主要内容,如果未能解决你的问题,请参考以下文章