2015-07-27 16 views

risposta

32
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.

+3

Opere greta. Qualcuno può confermare che l'accesso alla proprietà 'attributeTitle' tramite KVO non fa ** ** ** come utilizzando un'API privata? –

+0

Intendo "ottimo". –

+1

@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

7

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) 
+1

// Questo cambierà il colore del pulsante alertVC.view.tintColor = UIColor.orangeColor() non è supportato correttamente in iOS 9 –

+1

@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

0

Inoltre è possibile aggiungere un UIAlertAction con il titolo " "(spazio) e aggiungere un UILabel personalizzato per UIAlertController.view nel luogo di titolo.

5
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) { 
     // ... 
    } 
} 
Problemi correlati