在 Playground 中下载图像后如何更新 UIImageView
Posted
技术标签:
【中文标题】在 Playground 中下载图像后如何更新 UIImageView【英文标题】:How to update UIImageView after downloading image in Playground 【发布时间】:2016-02-17 04:49:46 【问题描述】:我在 Playground 中玩耍,试图更好地了解异步图像下载和设置。
我正在使用 NSURLSession DataTask,并且图像数据非常好——我可以使用 Playground 的 Quick Look 来确认这一点。
我也是使用XCPlayground框架设置页面为需要无限执行,当前页面的liveView就是目标imageView。
但是,仍然缺少某些内容,并且实时视图未正确更新。有任何想法吗?我想要做的归结为以下代码。您可以在屏幕截图中看到 Playground 的状态:
import UIKit
import XCPlayground
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
let someImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 256, height: 256))
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
session.dataTaskWithRequest(NSURLRequest(URL: NSURL(string: "http://www.stridesapp.com/strides-icon.png")!))
data, response, error in
if let data = data
print(data)
someImageView.image = UIImage(data: data)
.resume()
XCPlaygroundPage.currentPage.liveView = someImageView
【问题讨论】:
【参考方案1】:鉴于NSURLSession
不会在主队列上运行其完成处理程序,您应该自己将视图更新分派到主队列:
import UIKit
import XCPlayground
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
let someImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 256, height: 256))
let session = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration())
session.dataTaskWithRequest(NSURLRequest(URL: NSURL(string: "http://www.stridesapp.com/strides-icon.png")!)) data, response, error in
if let data = data
print(data)
dispatch_async(dispatch_get_main_queue())
someImageView.image = UIImage(data: data)
.resume()
XCPlaygroundPage.currentPage.liveView = someImageView
因此:
【讨论】:
做到了!菜鸟失误。谢谢,@Rob。以上是关于在 Playground 中下载图像后如何更新 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章
Playground 导入 - 更新到 Xcode 12 后没有这样的模块