Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:如何生成彩色&;圆形图标和字母表基于单元格项目,可在UITableView单元格中使用,如gmail应用程序中?_Ios_Objective C_Uitableview - Fatal编程技术网

iOS:如何生成彩色&;圆形图标和字母表基于单元格项目,可在UITableView单元格中使用,如gmail应用程序中?

iOS:如何生成彩色&;圆形图标和字母表基于单元格项目,可在UITableView单元格中使用,如gmail应用程序中?,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我想有一个圆形和彩色图像视图,在一个表格单元格内。图像必须基于该单元格中的项目生成,使用特定的逻辑(比如在gmail应用程序中有发件人姓名的第一个字母) 有这样的图书馆吗 要生成图像,您可以创建一个具有所需内容的自定义视图。可以像ui标签一样简单: UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 60, 60)] label.font = [UIFont boldSystemFontOfSize:16]; labe

我想有一个圆形和彩色图像视图,在一个表格单元格内。图像必须基于该单元格中的项目生成,使用特定的逻辑(比如在gmail应用程序中有发件人姓名的第一个字母)


有这样的图书馆吗

要生成图像,您可以创建一个具有所需内容的自定义视图。可以像
ui标签一样简单:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 60, 60)]
label.font = [UIFont boldSystemFontOfSize:16];
label.textColor = [UIColor whiteColor];
label.textAlignment = NSTextAlignmentCenter;
label.backgroundColor = [UIColor lightGrayColor];
label.layer.borderRadius = label.frame.size.height / 2.0f;
一旦你有了这个(老实说,你可以直接使用这个…),你就可以把它转换成一个图像:

UIGraphicsBeginImageContext(label.frame.size);
label.renderInContext(UIGraphicsGetCurrentContext());
UIImage *image = UIGraphicsGetImageFromCurrentContext();
UIGraphicsEndImageContext();
现在您有了一个
UIImage
,您应该将它缓存并存储在某个地方,这样您就可以在每次需要时检索它,而无需重新渲染它

要为视图着色,可以修改上述内容,或使用图像模板:

UIImage *templateImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];

图像不透明像素将使用
tintColor
着色。在这种情况下,您必须修改上面的内容,以便对文本使用
clearColor

尝试使用类似的方法,使方形UIView的.layer.cornerRadius=height/2,UILabel居中。我必须添加label.layer.maskToBounds=YES,然后它就工作了