使用 Swift 将新图像分配给 UIImageView
Posted
技术标签:
【中文标题】使用 Swift 将新图像分配给 UIImageView【英文标题】:Assign a new image to UIImageView with Swift 【发布时间】:2014-07-23 19:14:19 【问题描述】:我正在使用 Xcode 6 Beta 4,我正在尝试检索远程图像并将其分配给 UIImageView。我正在使用 NSURLSession dataTask 来使这个异步。这是我的代码:
func dataTask(imageUrl: String, targetImage:UIImageView)
let nsURL = NSURL(string: imageUrl)
let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL)
(data, response, error) in
if !error
NSLog("No Error!")
var image:UIImage = UIImage(data: data)
targetImage.image = image
else
NSLog("Error!")
task.resume()
这就是我打电话的方式:
self.dataTask("http://bicicletaspony.com/img/spn/TeamA.png", targetImage: image)
这是我得到的错误:(
由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“不得从后台线程执行对布局引擎的修改。”
这是一个非常简单的图像分配。为什么会这样崩溃?!任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:dataTaskWithURL
结束时运行的闭包在后台线程上调用。 UIKit(像大多数其他工具包一样)只能从主线程调用。您需要在主线程上设置图像,如下所示:
if !error
NSLog("No Error!")
var image:UIImage = UIImage(data: data)
dispatch_async(dispatch_get_main_queue(),
targetImage.image = image
)
【讨论】:
iain 感谢您这么快的回复!您的代码也成功了!以上是关于使用 Swift 将新图像分配给 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 imagemagick 将透明 png 旋转 45 度并保持新图像透明?