iOS:如何根据单元格项目生成带有字母的彩色和圆形图标,以便在 UITableView 单元格中使用,例如在 gmail 应用程序中?
iOS: How can I generate coloured & rounded icons with alphabets based on cell item to use in a UITableView cell like in gmail app?
我想在 table 单元格中有一个圆形和彩色图像视图。图像必须基于该单元格中的项目生成,使用特定的逻辑(例如在 gmail 应用程序中具有发件人姓名的第一个字母)。
有图书馆做这件事吗?
为了生成图像,您可以制作一个包含您想要的内容的自定义视图。可以像 UILabel
:
一样简单
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
作为文本。
我想在 table 单元格中有一个圆形和彩色图像视图。图像必须基于该单元格中的项目生成,使用特定的逻辑(例如在 gmail 应用程序中具有发件人姓名的第一个字母)。
有图书馆做这件事吗?
为了生成图像,您可以制作一个包含您想要的内容的自定义视图。可以像 UILabel
:
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
作为文本。