Come si modifica il font del titolo di UIAlertController usando Swift?Swift Come modificare il colore del titolo di UIAlertController
Non sto parlando del colore del messaggio, non sto parlando del colore dei pulsanti.
Sto parlando del titolo.
Come si modifica il font del titolo di UIAlertController usando Swift?Swift Come modificare il colore del titolo di UIAlertController
Non sto parlando del colore del messaggio, non sto parlando del colore dei pulsanti.
Sto parlando del titolo.
let attributedString = NSAttributedString(string: "Title", attributes: [
NSFontAttributeName : UIFont.systemFontOfSize(15), //your font here
NSForegroundColorAttributeName : UIColor.redColor()
])
let alert = UIAlertController(title: "", message: "", preferredStyle: .Alert)
alert.setValue(attributedString, forKey: "attributedTitle")
let cancelAction = UIAlertAction(title: "Cancel",
style: .Default) { (action: UIAlertAction!) -> Void in
}
presentViewController(alert,
animated: true,
completion: nil)
Aggiunta la riga di codice corretta alla mia risposta in quanto è molto più concisa della risposta di seguito.
Quello che push25 ha detto è corretto, solo tu devi usare la codifica del valore-chiave per impostare la stringa attribuita. (Grazie dupuis2387)
//Define a color
let color = UIColor.redColor()
//Make a controller
let alertVC = UIAlertController(title: "Dont care what goes here, since we're about to change below", message: "", preferredStyle: UIAlertControllerStyle.Alert)
//Title String
var hogan = NSMutableAttributedString(string: "Presenting the great... Hulk Hogan!")
//Make the attributes, like size and color
hogan.addAttribute(NSFontAttributeName, value: UIFont.systemFontOfSize(40.0), range: NSMakeRange(24, 11))
hogan.addAttribute(NSForegroundColorAttributeName, value: color, range: NSMakeRange(0, NSString(string: hogan.string).length))
//Set the new title
//Use "attributedMessage" for the message
alertVC.setValue(hogan, forKey: "attributedTitle")
//This will change the button color
alertVC.view.tintColor = UIColor.orangeColor()
//Make the button
let button:UIAlertAction = UIAlertAction(title: "Label text", style: UIAlertActionStyle.Default, handler: { (e:UIAlertAction!) -> Void in
println("\(e)")
})
//You can add images to the button
let accessoryImage:UIImage = UIImage(named: "someImage")!
button.setValue(accessoryImage, forKey:"image")
//Add the button to the alert
alertVC.addAction(button)
//Finally present it
self.presentViewController(alertVC, animated: true, completion: nil)
// Questo cambierà il colore del pulsante alertVC.view.tintColor = UIColor.orangeColor() non è supportato correttamente in iOS 9 –
@HassanTaleb - Perché questo non funziona in iOS 9, ecco una soluzione alternativa per l'impostazione del ' tintColor' di un pulsante 'UIAlertController': http://stackoverflow.com/a/32636878/4376309 – peacetype
Inoltre è possibile aggiungere un UIAlertAction con il titolo " "(spazio) e aggiungere un UILabel personalizzato per UIAlertController.view
nel luogo di titolo.
Alert(self, Title: “Hello”, TitleColor: UIColor.whiteColor(), Message: “World”, MessageColor: UIColor.whiteColor(), BackgroundColor: UIColor.blackColor(), BorderColor: UIColor.yellowColor(), ButtonColor: UIColor.yellowColor())
func Alert(View: ViewController, Title: String, TitleColor: UIColor, Message: String, MessageColor: UIColor, BackgroundColor: UIColor, BorderColor: UIColor, ButtonColor: UIColor) {
let TitleString = NSAttributedString(string: Title, attributes: [NSFontAttributeName : UIFont.systemFontOfSize(15), NSForegroundColorAttributeName : TitleColor])
let MessageString = NSAttributedString(string: Message, attributes: [NSFontAttributeName : UIFont.systemFontOfSize(15), NSForegroundColorAttributeName : MessageColor])
let alertController = UIAlertController(title: Title, message: Message, preferredStyle: .Alert)
alertController.setValue(TitleString, forKey: "attributedTitle")
alertController.setValue(MessageString, forKey: "attributedMessage")
let okAction = UIAlertAction(title: "OK", style: .Default) { (action) in
}
let cancelAction = UIAlertAction(title: "Cancel", style: .Default, handler: nil)
alertController.addAction(okAction)
alertController.addAction(cancelAction)
let subview = alertController.view.subviews.first! as UIView
let alertContentView = subview.subviews.first! as UIView
alertContentView.backgroundColor = BackgroundColor
alertContentView.layer.cornerRadius = 10
alertContentView.alpha = 1
alertContentView.layer.borderWidth = 1
alertContentView.layer.borderColor = BorderColor.CGColor
//alertContentView.tintColor = UIColor.whiteColor()
alertController.view.tintColor = ButtonColor
View.presentViewController(alertController, animated: true) {
// ...
}
}
Opere greta. Qualcuno può confermare che l'accesso alla proprietà 'attributeTitle' tramite KVO non fa ** ** ** come utilizzando un'API privata? –
Intendo "ottimo". –
@NicolasMiari La proprietà 'attributeTitle' non fa parte dell'API pubblica per [UIAlertController] (https://developer.apple.com/reference/uikit/uialertcontroller) ed è quindi considerata privata ([clausola 2.5.1] (https : //developer.apple.com/app-store/review/guidelines/#software-requirements)). Invia una richiesta di funzione usando [Bug Reporter] (https://bugreport.apple.com)! – jamesk