Jak zmienić czcionkę tytułu UIAlertController za pomocą Swift?Swift Jak zmienić kolor tytułu UIAlertController Kolor
Nie mówię o kolorze wiadomości, nie mówię o kolorze przycisków.
Mówię o tytule.
Jak zmienić czcionkę tytułu UIAlertController za pomocą Swift?Swift Jak zmienić kolor tytułu UIAlertController Kolor
Nie mówię o kolorze wiadomości, nie mówię o kolorze przycisków.
Mówię o tytule.
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)
Dodano prawidłową linię kodu do mojej odpowiedzi, ponieważ jest bardziej zwięzła niż odpowiedź poniżej.
Co powiedział push25 jest poprawny, tylko musisz użyć kodowania klucz-wartość, aby ustawić przypisany ciąg. (Dzięki 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)
// To zmieni kolor przycisku alertVC.view.tintColor = UIColor.orangeColor() nie jest poprawnie obsługiwany w systemie iOS 9 –
@HassanTaleb - ponieważ to nie działa w systemie iOS 9, oto sposób obejścia tego ustawienia tintColor' przycisku 'UIAlertController': http://stackoverflow.com/a/32636878/4376309 – peacetype
Również można dodać UIAlertAction z tytułowym "„(spacja) i dodać niestandardową UILabel do UIAlertController.view
w miejscu tytułu.
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) {
// ...
}
}
Działa greta. Czy ktokolwiek może potwierdzić, że dostęp do właściwości 'attributedTitle' przez KVO ma _ ** nie ** _ liczy się jako z prywatnego API? –
Mam na myśli "świetnie". –
@NicolasMiari Właściwość 'attributedTitle' nie jest częścią publicznego interfejsu API dla [UIAlertController] (https://developer.apple.com/reference/uikit/uialertcontroller) i dlatego jest uważana za prywatną ([klauzula 2.5.1] (https) : //developer.apple.com/app-store/review/guidelines/#software-requirements)). Prześlij żądanie funkcji za pomocą [zgłoszenia błędu] (https://bugreport.apple.com)! – jamesk