DMPathBar 0.1.0

DMPathBar 0.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2015年1月

Daniele Margutti维护。



DMPathBar 0.1.0

  • 作者:
  • Daniele Margutti

DMPathBar是一种类似于XCode中用于选择目标或Yosemite(即MacOS X 10.10)中浏览路径时使用的Finder的路径栏的Cocoa控件。

我将它做得在Yosemite中看起来很棒,但您可以很容易地根据您的需求进行自定义。

与其他许多Yosemite控件一样,DMPathBar完全支持使用现代的block样式语法对每个可用的操作(添加/设置/移除/替换项目)执行动画。

简短介绍

要运行示例项目,请克隆存储库,并在您的项目中运行pod install

然后,您可以通过从IB拖拽一个新的自定义视图实例并将其设置为'DMPathBar'来创建一个新的DMPathBar。您也可以通过编程创建它

NSImage *myIcon = ...;
NSString *myTitle = ...;
DMPathBarItem *titleItem = [DMPathBarItem itemWithTitle: myTitle icon: myIcon];

self.pathBar = [[DMPathBar alloc] initWithFrame:NSMakeRect(0.0f,0.0f,300.0f,25.0f)];
[self.pathBar setTitleItem: titleItem animated:NO completion:NULL];

标签栏中的每个路径项都是一个DMPathBarItem。您可以使用+itemWithTitle:icon:仅带标题和图标,或只带标题或只带图标创建新的路径栏

DMPathBarItem也可以持有自定义视图(使用+itemWithCustomView:

操作

通过实现定义为一个block的.action属性,您可以响应路径栏项内的点击事件

typedef NSMenu*(^DMPathBarAction)(NSInteger index,DMPathBarItem *item);

如果您返回一个NSMenu实例,则点击该项将打开传递的菜单作为上下文菜单。如果返回nil,则仅是简单的点击

以下是一个示例

    pathBar.action = ^NSMenu *(NSInteger idx,DMPathBarItem *item) {
        NSLog(@"Tap on item %ld : %@",idx,item);

        if (idx == 0) {
            // Click on the title item will show a menu
            NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];
            [menu addItemWithTitle:@"Item 1" action:@selector(test:) keyEquivalent:@""];
            [menu addItemWithTitle:@"Item 2" action:@selector(test:) keyEquivalent:@""];
            return menu;
        } else {
            // Do something with other items
            return nil;
        }
    };
}

设置标题项

此方法会添加或替换路径栏的现有标题

DMPathBarItem *item = ...;
[self.pathBar setTitleItem: titleItem animated:NO completion:NULL];

设置项

您可以使用-setItems:...方法一次性设置多个项。有两个基于你想要实现的动画类型的setItems方法。如果您想要单个设置动画,可以使用

NSArray *items = @[pathItem1,pathItem2...];
[self.pathBar setItems: items animated:YES inSequence:NO completion:NULL];

如果您想要对每个添加项进行单个动画,可以向inSequence参数传递YES

添加单个项

要添加新的项到路径栏的末尾,使用

DMPathBarItem *item = ...;
[self.pathBar addItem: item animated:YES  completion:NULL];

移除项

要移除最后一项

DMPathBarItem *item = ...;
[self.pathBar removeItemAnimated:YES  completion:NULL];

要移除所有项(有关inSequence参数的更多信息,请参阅'设置项'段落)

DMPathBarItem *item = ...;
[self.pathBar removeAllItemsAnimated:YES inSequence:YES  completion:NULL];

替换现有项

要替换路径栏中的现有项

DMPathBarItem *newItem = ...;
[self.pathBar replaceItemAtIndex:0 with:newItem animated:YES  completion:NULL];

副视图

您现在可以为路径栏设置一个可选的NSView实例(称为附加视图)作为补充。您可以将它放置在左侧或右侧(请参阅 .accessoryPosition 属性)

MyViewClass *accView = ...;
[self.pathBar setAccessoryView:accView animated:YES  completion:NULL];

需求

它适用于OS X 10.10。它也应该适用于10.9,但尚未经过测试。

安装

作者

Daniele Margutti 邮箱: [email protected] 网站: danielemargutti.com

许可

如果您在项目中使用DMPathBar,我非常乐意听到您的消息。

通过发送电子邮件给[email protected]让Daniele知道。

这是MIT许可。

版权所有 (c) 2015 Daniele Margutti danielemargutti.com

本许可证授予任何获取此软件及其相关文档副本(统称“软件”)的人不受限制地使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并授权向软件提供方提供软件的人按以下条款进行此类操作:

上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。

软件按“原样”提供,不管明示的还是暗示的,不提供任何保证,包括但不限于对适销性、适用于特定用途和不侵犯专利、商标、著作权或其他知识产权的保证。在任何情况下,作者或版权持有人不应对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或任何其他原因而产生的,无论是在软件使用过程中还是在软件或其使用过程中产生的。