我有一个包含大约30个图像图标的文件夹。我试图允许用户选择30" local"图像作为他们的头像。我希望找到最好的方法,但大多数教程都是为了访问相机胶卷并允许用户上传他们的照片。
我希望有一个方法,也许是一个UICollectionView,并允许他们选择一个将成为用户图标的图像。我理解如何从iPhone本身提取图像,但我目前使用的服务器未编码以允许此过程发生。
使用应用内的图片并将其放入图片视图的最佳方式是什么?
答案 0 :(得分:0)
UICollectionView
是要走的路。
您需要先加载所有本地头像文件名。以下示例将加载应用程序目录中以avatar-
开头的所有图像,忽略所有保留@2x.png
文件。
func getAvatarFilenames() -> Array<String> {
var avatarFileNames = Array<String>()
var paths = NSBundle.mainBundle().pathsForResourcesOfType("png", inDirectory: nil)
for path in paths {
var imageName = path.lastPathComponent
// ignore retina images as when the uiimage loads them back out
// it will pick the retina version if required
if (imageName.hasSuffix("@2x.png")) {
continue
}
// only add images that are prefixed with 'avatar-'
if (imageName.hasPrefix("avatar-")) {
avatarFileNames.append(imageName)
}
}
return avatarFileNames
}
然后,您可以创建一个加载每个头像文件名的UICollectionView
。这样的配置每个单元格(假设您的AvatarCell
有一个带有标记1000
的图像 - 或者更好的是UICollectionViewCell
子类。)
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("AvatarCell", forIndexPath: indexPath) as UICollectionViewCell
var avatarImageView = cell.viewWithTag(1000) as UIImageView
avatarImageView.image = UIImage(named: avatarFileNames[indexPath.row])