2011-11-25 26 views
1

我想改变IKImageBrowserView的组头的外观。 我已经看到我们可以提供一个自定义的CALayer和IKImageBrowserGroupHeaderLayer,但我根本不知道如何使用它(如何获得图层的大小,知道该组是否被选中,....)定制IKImageBrowserView组外观

你有这个指针吗?

谢谢

回答

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的变化,确定选择哪个或哪些项目,然后确定它们落在哪个组中(使用类似的过程来配置组时,我希望您缓存了!),然后调用reloadData,其中一个组根据是否包含选定的项目返回不同的图层配置(或其他)。

+0

感谢您的回答。除了一件事外,它工作得很好:展开/折叠三角形的位置不正确,它们不在组内。你遇到同样的问题吗? –