动态使用多维数组作为 UIImage 数组
Work with multi-diminutional array dynamically as UIImage array
我正在开发应用程序以在 scrollViews 内处理分页照片,就像在照片应用程序中向右滑动以获取旧照片并向左滑动以获取新照片,直到照片结束。
好的,我正在从网上获取多维照片:
imageArray[indexPath.row][0] as? String
那是在 ViewController1
中显示 CollectionView 中的所有图像。
当用户按下照片时,我会继续并在 ViewController2
中显示更大的图像,因此如果向左滑动它会显示新照片,向右滑动会显示存储在数组中的旧照片。
但我需要将我的二维数组转换为一个数组并动态地使用它成为这样的东西:
pageImages = [UIImage(named:"photo1.png")!,
UIImage(named:"photo2.png")!,
UIImage(named:"photo3.png")!,
UIImage(named:"photo4.png")!,
UIImage(named:"photo5.png")!]
这怎么可能?
我可以这样说:
pageImages = [UIimage(named:thewholearray)]
?
我首先尝试转换为一维数组但我失败了:
var imageArray : NSArray = []
var mybigarray : NSArray = []
for (var i=0; i<=self.imageArray.count; i++) {
self.mybigarray = self.imageArray[i][0] as! NSArray
}
生成此转换错误:
Could not cast value of type '__NSCFString' (0x196806958) to 'NSArray' (0x196807308).
您可以使用映射函数从多维数组中提取图像名称。
var imageNames:[String] = imageArray.map({
[=10=][0] as! String
})
map 函数像 for-in-loop 一样遍历所有数组条目。
闭包中的语句确定 imageNames 数组的新条目。
编辑:
如果你不使用Swift-Arrays:
var imageNames:NSMutableArray = []
for image in imageArray{
imageNames.addObject(image[0] as! String)
}
我看了教程,我认为这对 Daniel 的回答有帮助。保留 Daniel 的答案并使用数组中的 URLs 和扩展名。
添加此以从 URL
创建图像
extension UIImageView {
public func imageFromUrl(urlString: String) {
if let url = NSURL(string: urlString) {
let request = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
(response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
if data != nil {
self.image = UIImage(data: data)
}
else {
self.image = UIImage()
}
}
}
}
}
在 PagedImageScrollViewController 中使用它:
newPageView.imageFromUrl(pageImages[page])
pageImages 是您的字符串数组。
我正在开发应用程序以在 scrollViews 内处理分页照片,就像在照片应用程序中向右滑动以获取旧照片并向左滑动以获取新照片,直到照片结束。
好的,我正在从网上获取多维照片:
imageArray[indexPath.row][0] as? String
那是在 ViewController1
中显示 CollectionView 中的所有图像。
当用户按下照片时,我会继续并在 ViewController2
中显示更大的图像,因此如果向左滑动它会显示新照片,向右滑动会显示存储在数组中的旧照片。
但我需要将我的二维数组转换为一个数组并动态地使用它成为这样的东西:
pageImages = [UIImage(named:"photo1.png")!,
UIImage(named:"photo2.png")!,
UIImage(named:"photo3.png")!,
UIImage(named:"photo4.png")!,
UIImage(named:"photo5.png")!]
这怎么可能?
我可以这样说:
pageImages = [UIimage(named:thewholearray)]
?
我首先尝试转换为一维数组但我失败了:
var imageArray : NSArray = []
var mybigarray : NSArray = []
for (var i=0; i<=self.imageArray.count; i++) {
self.mybigarray = self.imageArray[i][0] as! NSArray
}
生成此转换错误:
Could not cast value of type '__NSCFString' (0x196806958) to 'NSArray' (0x196807308).
您可以使用映射函数从多维数组中提取图像名称。
var imageNames:[String] = imageArray.map({
[=10=][0] as! String
})
map 函数像 for-in-loop 一样遍历所有数组条目。 闭包中的语句确定 imageNames 数组的新条目。
编辑:
如果你不使用Swift-Arrays:
var imageNames:NSMutableArray = []
for image in imageArray{
imageNames.addObject(image[0] as! String)
}
我看了教程,我认为这对 Daniel 的回答有帮助。保留 Daniel 的答案并使用数组中的 URLs 和扩展名。
添加此以从 URL
extension UIImageView {
public func imageFromUrl(urlString: String) {
if let url = NSURL(string: urlString) {
let request = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
(response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
if data != nil {
self.image = UIImage(data: data)
}
else {
self.image = UIImage()
}
}
}
}
}
在 PagedImageScrollViewController 中使用它:
newPageView.imageFromUrl(pageImages[page])
pageImages 是您的字符串数组。