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