我想要的效果就像显示的iPhoto组(或时间轴)。
我已经实现了常见的IKImageBrowserView。这就像
但我不知道如何将它们分配到不同的组中。
我提到: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;
我想我不知道如何为最后两种方法编写代码。
答案 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。
为了真正有用,你需要缓存你的范围值集,并提供一种分组和取消分组图像的机制,但我希望这足以让你开始