Cocoa (UIKit ではない) で Swift を使用して ttf フォントから NSImage を生成しようとしていますが、現時点ではコンテキストの作成に苦労しています。
私の基本コードはこのプロジェクトから来ました: https://github.com/reeonce/Ionicons.swift ですが、UIKit 用に設計されているので、Cocoa 用に翻訳してみました。
元のコードは次のとおりです。
extension UIImage {
public class func imageWithIonIcon(icon: Ionicons, height: CGFloat, color: UIColor) -> UIImage {
let font = UIFont(name: "ionicons", size: height)!
let iconSize = (icon.rawValue as NSString).sizeWithAttributes([NSFontAttributeName: font])
UIGraphicsBeginImageContextWithOptions(iconSize, false, 0.0)
(icon.rawValue as NSString).drawAtPoint(CGPointZero, withAttributes: [NSFontAttributeName: font, NSForegroundColorAttributeName: color])
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
そして、これが私が現時点で持っているものです:
extension NSImage {
public class func imageWithIonIcon(icon: Ionicons, height: CGFloat, color: NSColor) -> NSImage? {
if let font = NSFont(name: "Ionicons", size: height) {
let iconSize = (icon.rawValue as NSString).sizeWithAttributes([NSFontAttributeName: font])
let context = CGBitmapContextCreate(nil, Int(iconSize.width), Int(iconSize.height), 8, Int(iconSize.width)*8, CGColorSpaceCreateDeviceRGB(), nil)
(icon.rawValue as NSString).drawAtPoint(CGPointZero, withAttributes: [NSFontAttributeName: font, NSForegroundColorAttributeName: color])
let image = NSImage(CGImage: CGBitmapContextCreateImage(context), size: iconSize)
return image
}
return nil
}
}
コンテキストを初期化する方法がわからないため、実行時エラーが発生します。
<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 24 bits/pixel; 3-component color space; kCGImageAlphaNone; 168 bytes/row.
初心者向けのヒントはありますか?ありがとう