2015-09-26 8 views
6

Questo è il mio avviso che funziona perfettamente. Voglio aggiungere un'immagine all'avviso che compare accanto al testo quando viene presentato l'avviso e sono in un SKScene in SpriteKit se fa la differenza.Aggiunta di un'immagine a un UIAlertController

var alertController = UIAlertController(title: "How to Skate", message: "Tap the screen to perform a trick and jump over the obsticles (You can grind on rails) The game will end when you hit a highlighted red, orange or yellow obsticle. Thats it! + Image", preferredStyle: UIAlertControllerStyle.Alert)  
alertController.addAction(UIAlertAction(title: "Cool!", style: UIAlertActionStyle.Cancel, handler: nil)) 
self.view?.window?.rootViewController?.presentViewController(alertController, animated: true, completion: nil) 

risposta

6

È possibile aggiungere un UIImageView come una visualizzazione secondaria alla tua UIAlertController.

var imageView = UIImageView(frame: CGRectMake(220, 10, 40, 40)) 
imageView.image = yourImage 
alert.view.addSubview(imageView) 

Questo è come si fa in UIAlertController:

let alertMessage = UIAlertController(title: "My Title", message: "My Message", preferredStyle: .Alert) 

let image = UIImage(named: "myImage") 
var action = UIAlertAction(title: "OK", style: .Default, handler: nil) 
action.setValue(image, forKey: "image") 
alertMessage .addAction(action) 

self.presentViewController(alertMessage, animated: true, completion: nil) 
+1

Questi approcci non sono conformi. Aggiunge efficacemente un'immagine a un'area del pulsante e influisce sul dimensionamento degli altri pulsanti nella vista di avviso. È anche probabile che l'accessibilità per questo approccio non sia nemmeno soddisfacente. Apple avrebbe dovuto rendere possibile l'installazione immediata, ma senza questa opzione, un avviso personalizzato creato da un 'UIView' sembra l'approccio migliore e ha il vantaggio della capacità di controllare tutti gli elementi. – user4806509

3

Si può fare in questo modo.

let imageView = UIImageView(frame: CGRectMake(220, 10, 40, 40)) 
    // imageView.image = UIImage(named: "ic_no_data") 
    let alertMessage = UIAlertController(title: "My Title", message: "", preferredStyle: .Alert) 

    let image = UIImage(named: "Image") 
    let action = UIAlertAction(title: "OK", style: .Default, handler: nil) 
    action.setValue(image, forKey: "image") 
    alertMessage .addAction(action) 

    self.presentViewController(alertMessage, animated: true, completion: nil) 
    alertMessage.view.addSubview(imageView) 
3
let alertMessage = UIAlertController(title: "My Title", message: "", preferredStyle: .alert) 
    let action = UIAlertAction(title: "OK", style: .default, handler: nil) 
    action.setValue(UIImage(named: "task1.png")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal), forKey: "image") 
    alertMessage .addAction(action) 
    self.present(alertMessage, animated: true, completion: nil) 

Swift 3

0

vivamente vi consiglio di usare questa libreria, al fine di creare una finestra di dialogo personalizzata davvero semplice:

https://github.com/vikmeup/SCLAlertView-Swift

Non vi resta che creare la vostra immagine visualizza in modo programmatico e aggiunge alla sottoview:

let imageView = UIIMageView(frame: CGRectMake(x,10,180,25)) 
imageView.image = UIImage(named:"image.jpg") 
imageView.layer.borderColor = UIColor.greenColor().CGColor 
subview.addSubview(imageView) 

Spero che aiuti l'accoppiamento!

Problemi correlati