允许用户在应用程序Swift中选择本地图像

时间:2015-03-03 04:15:03

标签: ios xcode swift

我有一个包含大约30个图像图标的文件夹。我试图允许用户选择30" local"图像作为他们的头像。我希望找到最好的方法,但大多数教程都是为了访问相机胶卷并允许用户上传他们的照片。

我希望有一个方法,也许是一个UICollectionView,并允许他们选择一个将成为用户图标的图像。我理解如何从iPhone本身提取图像,但我目前使用的服务器未编码以允许此过程发生。

使用应用内的图片并将其放入图片视图的最佳方式是什么?

1 个答案:

答案 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])