Настройка внешнего вида группы IKImageBrowserView

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

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

Спасибо

1 ответ

Решение

Я попробовал это сегодня, и это выглядело достаточно просто. Важно отметить, однако, что он работает только с 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 с одной из групп, возвращающих другую конфигурацию слоя (или любую другую) в зависимости от того, содержит ли она выбранный элемент или нет.

Другие вопросы по тегам