настройка внешнего вида группы IKImageBrowserView - PullRequest
1 голос
/ 25 ноября 2011

Я пытаюсь изменить внешний вид заголовка группы IKImageBrowserView. Я видел, что мы можем предоставить собственный CALayer с IKImageBrowserGroupHeaderLayer, но я вообще не знаю, как его использовать (как получить размер слоя, узнать, выбрана ли группа, ....)

У вас есть указатель для этого?

Спасибо

1 Ответ

1 голос
/ 04 января 2012

Сегодня я попробовал это, и это выглядело достаточно просто. Однако важно отметить, что он работает только с IKImageGroupDisclosureStyle группами.

Это обеспечило красивую розовую линию вдоль вершины каждой группы. Кажется, что когда представление отображает слой, оно изменяет размер слоя до ширины представления браузера, так что то, что я вставил в width для bounds, не изменило результат, однако оно учитывает height.

- (NSDictionary *) imageBrowser:(IKImageBrowserView *) aBrowser groupAtIndex:(NSUInteger) index
{
    CALayer *headerLayer = [CALayer layer];
    headerLayer.bounds = CGRectMake(0.0, 0.0, 100.0, 30.0);
    CGColorRef colour = CGColorCreateGenericRGB(1.0, 0.5, 0.7, 1.0);
    headerLayer.backgroundColor = colour;
    CGColorRelease(colour);

    return [NSDictionary dictionaryWithObjectsAndKeys:
        [NSNumber numberWithInt: IKGroupDisclosureStyle], IKImageBrowserGroupStyleKey,
        headerLayer, IKImageBrowserGroupHeaderLayer,
    nil];
}

Что касается "знать, выбрана ли группа", я предполагаю, что вы имеете в виду, если выбран один из элементов в группе? Я бы наблюдал в представлении selectionIndexes для изменений, определяя, какой элемент или элементы были выбраны, затем определяя, в какую группу они попадают (используя процесс, аналогичный тому, как вы указали IKImageBrowserGroupRangeKey при настройке группы, которую, я надеюсь, вы кэшировали !) и вызов reloadData с одной из групп, возвращающих другую конфигурацию слоя (или любую другую) в зависимости от того, содержит ли он выбранный элемент или нет.

...