iOS-图像阵列中没有任何显示(快速)

时间:2018-09-06 01:34:28

标签: ios arrays swift image scrollview

我试图将一个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)
    }        
}
}

1 个答案:

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

   }