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