我试图将一个Image分配给该数组,然后显示该图像-但是,它没有显示。如您所见,在我将图像分配给像这样的数组之后-
self.imageArray.append(UIImage(data: data!)!)
我打印出self.imageArray并打印出来,所以我知道它在那里-由于某种原因它没有显示。当我手动设置阵列中的图像时,它正在显示。
以下是完整的相关代码
import UIKit
class OpenView: UIViewController {
// Scroll view because I'm going to have multiple images
@IBOutlet weak var imageScrollView: UIScrollView!
// Receiving the string url for the image
var fullReceievingImageString: String? = ""
// Establishing the Array
var imageArray = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
// Convert the url to an image
if let imageUrl = fullReceievingImageString {
let url = URL(string: imageUrl)
URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print(error!)
return
}
DispatchQueue.main.async {
// Apply the image to the array
self.imageArray.append(UIImage(data: data!)!)
print(self.imageArray)
}
}.resume()
}
// Establish the image view(s)
for i in 0..<imageArray.count {
let imageView = UIImageView()
imageView.image = imageArray[i]
imageView.contentMode = .scaleAspectFit
let xPosition = self.view.frame.width * CGFloat(i)
imageView.frame = CGRect(x: xPosition, y: 0, width: self.imageScrollView.frame.width, height: self.imageScrollView.frame.height)
imageScrollView.contentSize.width = imageScrollView.frame.width * CGFloat(i + 1)
imageScrollView.addSubview(imageView)
}
}
}
答案 0 :(得分:0)
URLSession具有时间延迟,当您显示视图imageArr时,此时没有任何显示,您可以这样显示:
import UIKit
class OpenView: UIViewController {
// Scroll view because I'm going to have multiple images
@IBOutlet weak var imageScrollView: UIScrollView!
// Receiving the string url for the image
var fullReceievingImageString: String? = ""
// Establishing the Array
var imageArray = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
// Convert the url to an image
if let imageUrl = fullReceievingImageString {
let url = URL(string: imageUrl)
URLSession.shared.dataTask(with: url!) { (data, response, error) in
if error != nil {
print(error!)
return
}
DispatchQueue.main.async {
// Apply the image to the array
self.imageArray.append(UIImage(data: data!)!)
print(self.imageArray)
self.initSubView()
}
}.resume()
}
}
private func initSubView(){
// Establish the image view(s)
for i in 0..<imageArray.count {
let imageView = UIImageView()
imageView.image = imageArray[i]
imageView.contentMode = .scaleAspectFit
let xPosition = self.view.frame.width * CGFloat(i)
imageView.frame = CGRect(x: xPosition, y: 0, width: self.imageScrollView.frame.width, height: self.imageScrollView.frame.height)
imageScrollView.contentSize.width = imageScrollView.frame.width * CGFloat(i + 1)
imageScrollView.addSubview(imageView)
}
}
}