1

私が欲しい効果は、iPhotoグループ(またはタイムライン)が表示されるようなものです。

ここに画像の説明を入力してください

私はすでに一般的なIKImageBrowserViewを実現しました。のような ここに画像の説明を入力してください

しかし、私はそれらを異なるグループに割り当てる方法がわかりません。

私が言及したのは、おそらくstackoverflowの唯一の投稿であるIKImageBrowserViewグループの外観をカスタマイズすることです。

の4つの方法を使用しましたIKImageBrowserDataSource

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

最後の2つのメソッドのコードの書き方がわからないと思います。

4

1 に答える 1

2

グループを表示するには、最後の 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 に答える