2014-11-06 8 views
1

Я пытаюсь изменить шрифт заголовка и сообщения для предупреждения, отображаемого с помощью UIAlertController Я пытаюсь сделать это с помощью NSAttributedStirng, но он дает ошибку компилятора, которую строка NSAttributed не может принимать вместо Stirng я пытался что-то похожее на thisИзменить шрифт и шрифт сообщения с помощью UIAlertController в Swift

var title_attrs = [NSFontAttributeName : CustomFonts.HELVETICA_NEUE_MEDIUM_16] 
var msg_attrs = [NSFontAttributeName : CustomFonts.HELVETICA_NEUE_REGULAR_14] 
var title = NSMutableAttributedString(string:"Done", attributes:title_attrs) 

var msg = NSMutableAttributedString(string:"The job is done ", attributes:msg_attrs) 
let alertController = UIAlertController(title: title, message: title , preferredStyle: UIAlertControllerStyle.Alert) 

может кто-то наставит меня, как я могу добиться этого?

ответ

3

Я думаю, Apple удалила атрибутTitle и -message из API. Это никогда не было частью публики API, так что может быть, Apple не разрешит ваше приложение в магазине приложений, если вы его использовали.

Вы должны использовать UIAlertController как есть. Если вы хотите настроить его немного, см. Это NSHipster post. Если вы хотите большего контроля, создайте пользовательский вид для отображения.

1
extension UIAlertController { 
    func changeFont(view:UIView,font:UIFont) { 
     for item in view.subviews { 
      if item.isKindOfClass(UICollectionView) { 
       let col = item as! UICollectionView 
       for row in col.subviews{ 
        changeFont(row, font: font) 
       } 
      } 
      if item.isKindOfClass(UILabel) { 
       let label = item as! UILabel 
       label.font = font 
      }else { 
       changeFont(item, font: font) 
      } 

     } 
    } 
    public override func viewWillLayoutSubviews() { 
     super.viewWillLayoutSubviews() 
     let font = UIFont(name: YourFontName, size: YourFontSize) 
     changeFont(self.view, font: font!) 
    } 
} 
1
let myString = "Alert Title" 
    var myMutableString = NSMutableAttributedString() 
    myMutableString = NSMutableAttributedString(string: myString as String, attributes: [NSFontAttributeName:UIFont(name: "Georgia", size: 18.0)!]) 
    myMutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: NSRange(location:0,length:myString.characters.count)) 
    alertController.setValue(myMutableString, forKey: "attributedTitle") 
// and for message 
    alertController.setValue(myMutableString, forKey: "attributedMessage") 
2

Swift 3 Версия:

extension UIAlertController { 
    func changeFont(view: UIView, font:UIFont) { 
     for item in view.subviews { 
      if item.isKind(of: UICollectionView.self) { 
       let col = item as! UICollectionView 
       for row in col.subviews{ 
        changeFont(view: row, font: font) 
       } 
      } 
      if item.isKind(of: UILabel.self) { 
       let label = item as! UILabel 
       label.font = font 
      }else { 
       changeFont(view: item, font: font) 
      } 

     } 
    } 

    open override func viewWillLayoutSubviews() { 
     super.viewWillLayoutSubviews() 
     let font = YOUR_FONT 
     changeFont(view: self.view, font: font!) 
    } 
}