2016-06-26 4 views
1

OSXメニューバーのテンプレートイメージの作成に問題があります。私が言う限りでは、それはPDF画像でなければなりません。そのために、私が持っている:OSXメニューバーのテンプレートイメージを動的に作成

var pageRect: CGRect = CGRectMake(0, 0, CGFloat(10), CGFloat(barHeight)) 
let pdfData: NSMutableData = CFDataCreateMutable(nil, 0) 
let pdfConsumer = CGDataConsumerCreateWithCFData(pdfData as CFMutableDataRef) 
let pdfContext = CGPDFContextCreate(pdfConsumer, &pageRect, nil) 

は、その後、私はPDFに描画:

CGPDFContextBeginPage(pdfContext, nil) 
CGContextSetRGBFillColor (pdfContext, 1, 0, 0, 1) 
CGContextFillRect (pdfContext, CGRectMake (0, 0, 200, 100)) 
CGPDFContextEndPage(pdfContext) 

その後、私はNSImageでは作成しよう:

let image = NSImage(data: pdfData) 

を、ステータスアイテムのに追加します画像プロパティ:

button.image = image 

ただし、これはただ動作していません。イメージをディスクに保存して開こうとしましたが、イメージが破損しているというメッセージが表示されるので、pdfDataをNSImageに変換する際にエラーが発生していると思われます。とにかく、どんな助けもありがとう。

答えて

2

テンプレート画像はではありません。はPDFでなければなりません。 NSImageのインスタンスをテンプレートイメージにするには、そのtemplateプロパティをtrueに設定するだけです。

画像の性質(ビットマップ、PDFなど)に関係なく、システムはテンプレート画像のときにのみアルファチャンネルを使用します。カラーチャネルは無視されます。

システムは、ファイル名 - マイナス拡張子が "テンプレート"で終わると、ファイルから読み込まれた画像をテンプレート画像として自動的にマークします。たとえば、fooTemplate.pngやbarTemplate.pdfなどです。

関連する問題