タイプ'[String : AnyObject]?'
の値を期待される引数タイプ'[NSAttributedStringKey : Any]?'
に変換する方法
open class func drawText(context: CGContext, text: String, point: CGPoint,
align: NSTextAlignment, attributes: [String : AnyObject]?)
{
var point = point
if align == .center
{
point.x -= text.size(withAttributes: attributes).width / 2.0
}
else if align == .right
{
point.x -= text.size(withAttributes: attributes).width
}
NSUIGraphicsPushContext(context)
(text as NSString).draw(at: point, withAttributes: attributes)
NSUIGraphicsPopContext()
}
これはSwift 4.の新しい機能です。文字列識別子や辞書キーを取得するすべてのCocoaメソッドは、キーに対して独自のタイプを持ちます。これは、型の安全性—古い体制では、誤ってString
定数を他のAPIで使用することを意図していましたが、Swift 4、これにより、コンパイルエラーが発生します。
メソッドのシグネチャを次のように変更します。
open class func drawText(context: CGContext, text: String, point: CGPoint,
align: NSTextAlignment, attributes: [NSAttributedString.Key : Any]?)
編集: Swift 4.2用に更新されました!NSAttributedStringKey
はNSAttributedString.Key
に名前が変更されました。
atrribute
関数のdrawText
引数が正しくありません。
変化する
open class func drawText(context: CGContext, text: String, point: CGPoint, align: NSTextAlignment, attributes: [String : AnyObject]?)
に
open class func drawText(context: CGContext, text: String, point: CGPoint, align: NSTextAlignment, attributes: [NSAttributedStringKey : Any]?)