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。
本许可证授予任何获取此软件及其相关文档副本(统称“软件”)的人不受限制地使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并授权向软件提供方提供软件的人按以下条款进行此类操作:
上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。
软件按“原样”提供,不管明示的还是暗示的,不提供任何保证,包括但不限于对适销性、适用于特定用途和不侵犯专利、商标、著作权或其他知识产权的保证。在任何情况下,作者或版权持有人不应对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或任何其他原因而产生的,无论是在软件使用过程中还是在软件或其使用过程中产生的。