iOS:如何处理用户可选择的图标? (保存/加载等)
Posted
技术标签:
【中文标题】iOS:如何处理用户可选择的图标? (保存/加载等)【英文标题】:iOS: How to handle icons selectable by user? (saving/loading etc.) 【发布时间】:2013-04-30 13:05:06 【问题描述】:我正在开发我的第一个更复杂的应用程序,但找不到解决方案。我已经在我的应用程序中加载了大约 64 个图标。对于表格视图,用户可以为每个单元格分配这些图标之一。基本上,当他编辑单元格时,他会进入一个包含所有 64 个图标的新 UIView。当前选择的图标应该有一个边框,如果他点击不同的边框,边框应该会移动,并且图标会分配给 tableview 中的所选项目。
我现在的问题是: a) 如何将这 64 个图标加载到我的视图中?我已经使用所有 UIImageViews 创建了视图,但是如何将它们加载到这些 imageviews 中?如果我将它们复制到我的目录中,它们会保存在哪里?如何访问它们? b) 有没有比手动将 64 个不同的 UIViews 放入此视图并将它们与 IBOutles 链接起来更简单的方法?
【问题讨论】:
【参考方案1】:使用 UICollectionView 可以轻松解决您的问题。 UICollectionView 就像 UITableView 一样。
通过链接了解更多关于 UICollection 的信息
http://skeuo.com/uicollectionview-custom-layout-tutorial
使用 UICollection 视图,您只需要传递保存在数组中的图像对象
【讨论】:
但是这种方法的一个严重缺点是您的应用只能在 ios 6 及更高版本上运行,并且不支持早期的 iOS 版本。【参考方案2】:这是关于各种主题的很多问题。
如何加载图标/图像?
UIImage *image = [UIImage imageNamed:@"fubar.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
如果您只是在项目中复制图像,它们是主包的一部分,并且在大多数情况下,您几乎忽略了它们的保存位置。访问它们非常容易。 (见上文)
有没有“更简单的方法”......好吧,如果你想知道是否有更简单的方法,你必须给我们一个方法。不过我认为一个简单的命名约定和一个循环是可行的。
NSMutableArray *icons = [NSMutableArray array];
NSString *iconName;
UIImage *image;
UIImageView *imageView; = [[UIImageView alloc] initWithImage:image];
for (int count=0 ; count < 65 ; count++)
iconName = [NSString stringWithFormat:@"icon%d.png", count];
image = [UIImage imageNamed:iconName];
[icons addObject:image];
然后您将使用您的icons
数组作为您的UITableView
的基础。不过关于那个。您可能想考虑改用UICollectionView
。它就像一个表格,但它是一个项目网格,而不仅仅是行。它更适合大量图像。
至于如何将图像复制到视图中,UITableView
和 UICollectionView
都有“询问”数据并为您提供位置的方法。根据您刚刚设置的位置信息,它将处理其余部分。它可能看起来像
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
// ...
// remembering 'icons' is our array of image data
cell.imageView.image = icons[indexPath.row];
// ...
从评论编辑:How to tell if a file exists in the app bundle?(我的回答只是剪切/粘贴)
[[NSFileManager defaultManager] fileExistsAtPath:pathAndFileName];
【讨论】:
一个后续问题:如何检查某个图像是否存储在应用程序包中?【参考方案3】:您必须在代码中执行此操作。我建议您将所有文件名放在NSArray
中,然后遍历它,并在每一步以编程方式在您的ViewController
上创建一个UIImageView
。我建议您将UIButton
子类化,以便在您点击它时“选中”它,然后您可以将任何图像放入其中。
【讨论】:
【参考方案4】:你可以使用gridView一个开源组件这里是链接
GridView
还可以检测到您可以为每个 imageView 分配标签,例如从 0 到 63,然后当用户选择第 0 个图像时,您可以将该标签分配给本地变量,以便下次用户查看网格时,您可以识别该用户之前选择了第 0 个索引图像。希望对你有帮助。
【讨论】:
以上是关于iOS:如何处理用户可选择的图标? (保存/加载等)的主要内容,如果未能解决你的问题,请参考以下文章