如何访问UITableViewCellAccessoryDisclosureIndicator的图像文件?

时间:2011-10-06 00:32:13

标签: iphone ios cocoa-touch uitableview

我正在尝试制作一个比普通指示器略大的自定义UITableViewCellAccessoryDisclosureIndicator,它是一种不同的颜色。我想知道是否有人可以告诉我如何访问指标和高位指标的文件?

或者如果有方法以编程方式完成此操作,我也有兴趣听到这个。谢谢!

3 个答案:

答案 0 :(得分:2)

您无法直接访问披露指标,因为它是系统类型,但您可以通过创建自定义视图并使用accessoryView(或editingAccessoryView)进行设置来设置自己的自定义指标属性。

答案 1 :(得分:2)

我相信大多数常见的UIKit元素都在UIKit.framework / Other.artwork中。 .artwork文件基本上只是BGRA顺序中的原始像素数据 - 要做任何有用的事情,通常需要图像偏移/尺寸。

相反,从SDK获取随机图像的最简单方法通常是在位图上下文中渲染图层(如果它只是一个CGI图像,则抓取CALayer.contents)并将其写为PNG。首先,您必须找到正确的图层 - 对于表格单元格,我会断点-tableView:didSelectRowAtIndexPath:,调用[tableView cellForRowAtIndexPath:indexPath]来获取单元格,并查看其子视图,直到找到大小合适的大小为披露指标。然后,只需调用类似

的内容
-(void)dumpLayerAsPNG:(CALayer*)layer
{
  UIGraphicsBeginImageContextWithOptions(layer.bounds.size, 0, 0);
  [layer renderInContext:UIGraphicsGetCurrentContext()];
  UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
  NSData * imgData = UIImagePNGRepresentation(img);
  NSString * docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES) objectAtIndex:0];
  NSString * filename = @"foo.png";
  [imgData writeToFile:[docsDir stringByAppendingPathComponent:filename] atomically:NO];
}

答案 2 :(得分:0)