【问题标题】:IKImageBrowserView: how to display tooltip for every item?IKImageBrowserView:如何显示每个项目的工具提示?
【发布时间】:2012-01-09 16:42:31
【问题描述】:

我查阅了文档,但没有找到怎么做。如何为 IKImageBrowserView 中的每个项目添加工具提示?

【问题讨论】:

    标签: cocoa appkit ikimagebrowserview imagekit


    【解决方案1】:

    IKImageBrowserView 是一个 NSView,因此您可以使用以下函数添加工具提示矩形:

    http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/doc/uid/20000014-SW47

    对于我的实现,我的图像浏览器位于不调整大小的滚动视图中,因此我只需在使用此代码更改数据时更新工具提示,其中图像是我的数据源数组:

    [imageBrowser reloadData];
    [imageBrowser removeAllToolTips];
    for (int i=0; i<[images count]; i++) {
        NSRect rect = [imageBrowser itemFrameAtIndex:i];
        ImageObject *image = [images objectAtIndex:i];
        [imageBrowser addToolTipRect:rect owner:self userData:image];
    }
    

    然后我实现了这个功能:

    - (NSString*)view:(NSView *)view stringForToolTip:(NSToolTipTag)tag point:(NSPoint)point userData:(void *)data {
        ImageObject *image = (ImageObject*)data;
        return [image imageTitle];
    }
    

    如果您的图像浏览器更改其布局(您调整其大小添加/删除列,或者您更改缩放等),您将需要更新所有工具提示。

    【讨论】:

    • 我怀疑如果滚动图像浏览器包含数百张图像,可能会出现性能问题。另一种方法是使用visibleItemIndexes 为可见项添加工具提示,并在视图滚动时刷新工具提示。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多