您的位置:首页 > 其它

在Dock图标上画进度条

2012-06-15 14:30 78 查看
如果你用过Toast这个刻录软件,你会发现在刻录的时候,Dock图标上会有一个进度条,表示刻录的进度。如果你在用XCode,编译的时候图标上也会有一个进度条表示编译的进度。
其实在Dock图标上画进度条是很简单的事情,你只需要做如下工作即可:

要在Dock上显示图标,最简单的方法是使用NSApp的setApplicationIconImage:方法。我们只要创建一个NSImage,将应用程序的图标贴上,再在上面画上一个进度条,接着使用NSApp setApplicationIconImage:方法。
在需要更新进度的时候,重新画出相应长度的进度条,再重新设置一下应用程序的图标,就可以了。
大致的代码如下:

-(void) updateDockTile

{

    NSImage*    dockIcon = [[[NSImage alloc] initWithSize: NSMakeSize(128,128)] autorelease];

   

   

    [dockIcon lockFocus];

        NSRect      box = { {4, 4}, {120, 16} };

       

        // App icon:

        [[NSImage imageNamed: @"NSApplicationIcon"] dissolveToPoint: NSZeroPoint fraction: 1.0];

       

        // Track & Outline:

        [[NSColor whiteColor] set];

        [NSBezierPath fillRect: box];

       

        [[NSColor blackColor] set];

        [NSBezierPath strokeRect: box];

       

        // State fill:

        box = NSInsetRect( box, 1, 1 );

        [[NSColor knobColor] set];

       

        box.size.width = (box.size.width / (max -min)) * (current -min);

       

        NSImage*    prImg = [NSImage imageNamed: @"MiniProgressGradient"];

        NSRect      picBox = { { 0,0 }, { 0,0 } };

  if( prImg )

  {

   picBox.size = [prImg size];

   [prImg drawInRect: box fromRect: picBox operation: NSCompositeCopy fraction: 1.0];

  }

  else

   NSRectFill( box );

    [dockIcon unlockFocus];

   

    [NSApp setApplicationIconImage: dockIcon];

}

 
你可以在这里下载例子。源码作者是Uli
Kusterer。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xcode 工作