使用透明背景在Alert ViewController的中心添加图像

时间:2017-03-23 10:18:42

标签: ios swift uialertview

如何在alert viewController的中心显示图像,并具有alert 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)

看起来像这样。

enter image description here

请帮助我解决这个问题,并感谢所有人。

2 个答案:

答案 0 :(得分:0)

你可以存储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
        })

答案 1 :(得分:0)

UIAlertController不支持视图层次结构中的此类更改,您可以更好地使用模仿UIAlertController行为的自定义可扩展组件。 UIAlertController的问题在于,您不知道Apple将如何在下一版本的iOS中更改其视图层次结构。每次他们更改某些内容时,您都必须为特定版本的iOS添加代码,从可维护性的角度来看这非常糟糕。

例如CustomIOSAlertView:https://github.com/wimagguc/ios-custom-alertview