fab*_*ian 10 swift apple-watch watchkit
是否有更优雅的解决方案在手表上加载外部图像而不是以下?
let image_url:String = "http://placehold.it/350x150"
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
let url:NSURL = NSURL(string:image_url)!
var data:NSData = NSData(contentsOfURL: url)!
var placeholder = UIImage(data: data)!
// update ui
dispatch_async(dispatch_get_main_queue()) {
self.imageView.setImage(placeholder)
}
}
Run Code Online (Sandbox Code Playgroud)
Fok*_*gen 15
NSURL旨在用于本地文件.而是使用NSURLSession.设置远程图像的比例也很有用.
import WatchKit
public extension WKInterfaceImage {
public func setImageWithUrl(url:String, scale: CGFloat = 1.0) -> WKInterfaceImage? {
NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: url)!) { data, response, error in
if (data != nil && error == nil) {
let image = UIImage(data: data!, scale: scale)
dispatch_async(dispatch_get_main_queue()) {
self.setImage(image)
}
}
}.resume()
return self
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它
self.imageView.setImageWithUrl(image_url, scale: 2.0)
Run Code Online (Sandbox Code Playgroud)
这是类别
import WatchKit
public extension WKInterfaceImage {
public func setImageWithUrl(url:String) -> WKInterfaceImage? {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
let url:NSURL = NSURL(string:url)!
var data:NSData = NSData(contentsOfURL: url)!
var placeholder = UIImage(data: data)!
dispatch_async(dispatch_get_main_queue()) {
self.setImage(placeholder)
}
}
return self
}
}
Run Code Online (Sandbox Code Playgroud)
像这样使用它
self.imageView.setImageWithUrl(image_url)
Run Code Online (Sandbox Code Playgroud)
我认为这个解决方案很好,因为当你试图从网上加载一些图像时,它可以帮助你的应用程序摆脱困境.你可以创建一个像这样的新函数:
func loadImage(url:String, forImageView: WKInterfaceImage) {
// load image
let image_url:String = url
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
let url:NSURL = NSURL(string:image_url)!
var data:NSData = NSData(contentsOfURL: url)!
var placeholder = UIImage(data: data)!
// update ui
dispatch_async(dispatch_get_main_queue()) {
forImageView.setImage(placeholder)
}
}
}
Run Code Online (Sandbox Code Playgroud)
在那之后你想从urlString加载图片的任何地方你可以像这样使用:
loadImage("http://...", forImageView: self.myImageView)
Run Code Online (Sandbox Code Playgroud)
希望这有帮助.
| 归档时间: |
|
| 查看次数: |
6753 次 |
| 最近记录: |