如何使用IKImagebrowserView的组显示?

时间:2013-02-15 19:18:55

标签: grouping ikimagebrowserview ikimagekit

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

enter image description here

我已经实现了常见的IKImageBrowserView。这就像 enter image description here

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

我提到:customizing IKImageBrowserView group appearance,这是stackoverflow中唯一的帖子,也许。

我使用IKImageBrowserDataSource的4种方法。

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

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

1 个答案:

答案 0 :(得分: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。

为了真正有用,你需要缓存你的范围值集,并提供一种分组和取消分组图像的机制,但我希望这足以让你开始