gpt4 book ai didi

arrays - 来自带有 URL 的数组的 UIImage

转载 作者:行者123 更新时间:2023-11-30 14:03:21 25 4
gpt4 key购买 nike

我目前正在开发一个应用程序,它从 JSON 检索 url,并使用 URL 创建一些 ImageView。当我解码 JSON 时,我将每个 URL 存储到一个数组中。

问题是,我如何为数组中的每个 URL 创建一个 ImageView ?

这是我的代码:

if(success == 1)
{
DataFromJSon = jsonData["objects"] as! NSArray

repos.removeAll()

for one in DataFromJSon {
let repo = Repository(jsonData: one as! [String : AnyObject])
repos.append(repo)

}

for repo in repos {
lines.insert(repo.picture_url, atIndex: i)
dump(lines)
i++
}


//Construct the imgUrl to get an image URL for the pages
if let urlString: NSString = MyArray {
if let url = NSURL(string: urlString as String) {
if let data = NSData(contentsOfURL: url) {
newCard.image = UIImage(data: data)!
newCard.content = titleApp
newCard.desc = prixApp
self.data.append(newCard)
NSLog("fetch new data")
}
}
}
}

谢谢!

注意:

GIF Swype

最佳答案

这是一个最小的工作示例

var urls = [NSURL]()
urls.append(NSURL(string: "https://yourimage1")!)
urls.append(NSURL(string: "https://yourimage2")!)

for url in urls {
dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
if let data = NSData(contentsOfURL: url) {
let image = UIImage(data: data)!
let view = UIImageView(image: image)
dispatch_async(dispatch_get_main_queue()) {
// Display your view here
}
}
}
}

正如@Abizern所提到的,您应该将数据的下载放在后台队列中,并使用主队列来更新UI。您可以通过设置 UIImageView 的大小,然后根据需要在 contentMode 属性上使用 .ScaleAspectFit.ScaleAspectFill 来缩放图像。

编辑

我刚刚使用您提供的图像链接对其进行了测试,代码运行良好。

    var urls = [NSURL]()
urls.append(NSURL(string: "http://www.parkers.co.uk/Images/PageFiles/74655/firstdrive9.jpg")!)
urls.append(NSURL(string: "http://www.rsiauto.fr/images/BMW/330-Ci/330-Ci-1.jpg")!)

var i = 0
let width = self.view.frame.width/2
let height = self.view.frame.height

for url in urls {
dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)) {
if let data = NSData(contentsOfURL: url) {
let image = UIImage(data: data)!
let frame = CGRectMake(CGFloat(i++)*width, 0, width, height)
i++
let view = UIImageView(image: image)
view.frame = frame
view.contentMode = .ScaleAspectFit
view.layer.masksToBounds = true
view.backgroundColor = UIColor.redColor()
dispatch_async(dispatch_get_main_queue()) {
self.view.addSubview(view)
print("Done")
}
}
}
}

这里是截图

Screenshot

关于arrays - 来自带有 URL 的数组的 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32719881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com