gpt4 book ai didi

objective-c - 小牛风格标记

转载 作者:太空狗 更新时间:2023-10-30 03:45:52 25 4
gpt4 key购买 nike

我对 cocoa 很陌生,我正在尝试找出如何在 Mavericks 中创建类似于新标记 UI 的东西:

enter image description here

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

感谢您的帮助!

最佳答案

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

菜单部分实际上非常简单,因为您可以像这样向菜单项添加图像:

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;

关于 token drawing 的东西,请对我的信息持保留态度,因为 Apple 关于这些东西的文档非常缺乏,所以我告诉你的一切都来自个人斗争、诅咒和撞头。无论如何,很抱歉我不能给你带来更好的消息,但我想,事情就是这样。祝你好运。

关于objective-c - 小牛风格标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20091673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com