首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小牛风格标记

小牛风格标记
EN

Stack Overflow用户
提问于 2013-11-20 09:14:31
回答 1查看 312关注 0票数 6

我对可可很陌生,我正在努力寻找如何创建类似于小牛中的新标签UI的东西:

我想,我将不得不覆盖NSTokenFieldCell,以获得彩色点或标签上的图标。但是这个弹出列表是如何工作的呢?

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-17 21:54:50

可悲的是,你得自己动手。几乎所有在NSTokenFieldCell中进行的绘图都是私有的,因此添加任何类型的装饰性元素都必须由您来完成。如果我没记错的话,NSTokenFieldCell使用的是NSTokenTextView而不是窗口的标准字段编辑器。我不知道它有什么不同,但我认为它主要是为了处理“标记化”属性字符串的特殊性质。我认为他们只是使用NSAttachmentCell对象作为图形标记,当单元格接收到-mouseDown:事件时,就会显示菜单。

菜单部分实际上非常容易,因为您可以向菜单项添加图像,如下所示:

代码语言:javascript
复制
NSMenuItem *redItem = [[NSMenuItem alloc] initWithTitle:@"Red"
                                                 action:@selector(chooseColorMenuItem:)
                                          keyEquivalent:@""];

// You could add an image from your app's Resources folder:
NSImage *redSwatchImage = [NSImage imageNamed:@"red-menu-item-swatch"];

// ----- or -----

// You could dynamically draw a color swatch and use that as its image:
NSImage *redSwatchImage = [NSImage imageWithSize:NSMakeSize(16.0, 16.0) 
                                         flipped:NO 
                                  drawingHandler:^BOOL(NSRect dstRect) {

    NSRect pathRect = NSInsetRect(dstRect, 0.5, 0.5); // Aligns border to integral values
    NSBezierPath *path = [NSBezierPath bezierPathWithOvalInRect:pathRect];
    NSColor *fillColor = [NSColor redColor];
    NSColor *strokeColor = [fillColor shadowWithLevel:0.5];

    [fillColor setFill];
    [path fill];

    [strokeColor setStroke];
    [path stroke];

    return YES;
}];

redItem.image = redImage;

关于象征性的绘画材料,把我的信息拿来一点盐,因为苹果公司关于这个东西的文档非常缺乏,所以我告诉你的每件事都是来自个人的挣扎,诅咒和头部撞击。不管怎么说,我很抱歉不能给你带来更好的消息,但我想,这就是事实。祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20091673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档