1

我想要的效果就像 iPhoto 组(或时间线)显示。

在此处输入图像描述

我已经实现了常见的IKImageBrowserView。这就像 在此处输入图像描述

但我不知道如何将它们分配到不同的组中。

我提到:自定义 IKImageBrowserView 组外观,这可能是 stackoverflow 中唯一的帖子。

我使用了 4 种方法IKImageBrowserDataSource

- (NSUInteger)numberOfItemsInImageBrowser:(IKImageBrowserView *)browser;
- (id)imageBrowser:(IKImageBrowserView *)browser itemAtIndex:(NSUInteger)index;
- (NSUInteger)numberOfGroupsInImageBrowser:(IKImageBrowserView *)browser;
- (NSDictionary *)imageBrowser:(IKImageBrowserView *)browser groupAtIndex:(NSUInteger)index;

我想我不知道如何为最后两种方法编写代码。

4

1 回答 1

2

您肯定需要实现最后两种方法才能显示组。如果你只是想看看效果,你可以这样做:

- (NSUInteger) numberOfGroupsInImageBrowser:(IKImageBrowserView *) aBrowser
{
    return 1;
}
- (NSDictionary *) imageBrowser:(IKImageBrowserView *) aBrowser groupAtIndex:(NSUInteger) index
{
    NSRange r = {0, 3};
    return @{IKImageBrowserGroupRangeKey: [NSValue valueWithRange:r],
             IKImageBrowserGroupBackgroundColorKey: [NSColor redColor],
             IKImageBrowserGroupStyleKey: [NSNumber numberWithInt:IKGroupDisclosureStyle]};
}

groupAtIndex 返回的目录中的重要键是IKImageBrowserGroupRangeKey. 这描述了给定组中的图像范围。请注意,NSRange 是一个结构,不是从 NSObject 派生的,因此它不能用作字典中的值。因此,它必须转换为 NSValue。

为了真正有用,您需要缓存您的一组范围值并提供一种对图像进行分组和取消分组的机制,但我希望这足以让您入门

于 2013-02-19T01:25:10.600 回答