2016-08-24 3 views
0

OS XアプリケーションのstatusItemをシステムステータスバーに表示しようとしていますが、タイトルが切断されていること以外はすべて成功しています。あなたは私のもの(iStatMenuBar)に次のアプリケーションを見ることができるように enter image description hereOSStatusBar statusItemタイトルがOS Xで短くなっています

自分のアプリケーションにタイトルを切断されています。問題は、statusItem.titleはそうのような表示されている

let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1) 


func applicationDidFinishLaunching(aNotification: NSNotification) { 
    let icon = NSImage(named: "statusIcon") 
    icon?.template = true 
    statusItem.image = icon 
    statusItem.menu = statusMenu 
    statusItem.title = "This is a test title" 
} 

:私はそうのようにすべてを初期化しています(同様のことが起こっています)

statusItemのアイコンをコメントアウトすると、タイトル全体が表示されますが、アイコンを再追加すると、再び削除されます。 2つのアイコン(アイコンとタイトル)が共存する方法はありますか?私はいくつかのAppleのドキュメントを見直し、これを説明する重要な部分を見逃しているかもしれません。

ありがとうございます。

答えて

0

カスタムビューをstatusBarItemに割り当て、そのビューのクラス内でdrawRect(dirtyRect:NSRect)をオーバーライドすることもできます。

private var icon:StatusMenuView? 
    let bar = NSStatusBar.systemStatusBar() 
    item = bar.statusItemWithLength(-1) 

    self.icon = StatusMenuView() 
    item!.view = icon 

とStatusMenuViewは、次のようになります。今

// This is an edited copy & paste from one of my personal projects so it might be missing some code 
    class StatusMenuView:NSView { 
     private(set) var image: NSImage 
     private let titleString:NSString = "really long title..." 

     init() { 
      icon = NSImage(named: "someImage")! 
      let myWideStatusBarItemFrame = CGRectMake(0, 0, 180.0, NSStatusBar.systemStatusBar().thickness) 
      super.init(frame.rect) 
     } 


     override func drawRect(dirtyRect: NSRect) 
     { 
      self.item.drawStatusBarBackgroundInRect(dirtyRect, withHighlight: self.isSelected) 

      let size = self.image.size 
      let rect = CGRectMake(2, 2, size.width, size.height) 

      self.image.drawInRect(rect) 


      let titleRect = CGRectMake(2 + size.width, dirtyRect.origin.y, 180.0 - size.width, size.height) 
      self.titleString.drawInRect(titleRect, withAttributes: nil) 
     } 
    } 

、上記のあなたのイベント処理を変更する可能性があります、あなたはStatusMenuViewクラスでmouseDownイベントを処理する必要があります。

関連する問題