我有一个集合视图控制器,它通过URL加载图像Async.(像Instegram这样的东西)我正在寻找实现加载图像部分的最佳方法.请告诉我你的想法
第一种方式 - 没有任何外部库:
let downloadQueue = dispatch_queue_create("com.pro.asyncImages",nil)
dispatch_async(downloadQueue){
var data = NSData(contentsOfURL: NSURL(string: pictureUrl!)!)
var image: UIImage?
if (data != nil){
image = UIImage(data: data!)
}
dispatch_async(dispatch_get_main_queue()){
uiImageView.image = image
}
}
Run Code Online (Sandbox Code Playgroud)
第二种方式 - 使用Alamofire(请求属于Alamofire)
if let mediaUrl = info.mediaUrl {
request(.GET,mediaUrl).response(){
(_, _, data, _) in
let image = UIImage(data: data! as NSData)
imageView.image = image
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我读到AFNetworking在将url异步加载到urlImage方面做得很好,这就是我想要做的.
那么AFNetworking更适合这项任务吗?(然后是Alamofire)如果没有,我不明白如何将AFNetworking添加到我的swift项目中,除了添加#import"AFNetworking.h",我需要添加哪些文件?
请解释哪种方法最好,我的需求是性能,指责,缓存.视图集合控制器就像Instegram一样,正在加载图像,同时向下滚动.我希望我对自己需要的东西足够清楚,谢谢
我想使用UIActivityViewController分享简单的文本我使用swift,使用xcode 6.3代码非常简单,非常适合照片,但不仅仅是文本,我不想包含任何带有objectsToShare的web URL,只是干净的文本这是代码:
var objectsToShare: ["some text to share"]!
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
//handler for completed task
activityVC.completionHandler = {(activityType, completed:Bool) in
if !completed {
println("cancelled")
return
}
reportCompleted() //report to server it's done.
}
//Excluded Activities Code
activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList, UIActivityTypeCopyToPasteboard ]
//activate the share view
self.presentViewController(activityVC, animated: true, completion: {
(complete) in
println(complete)
})
Run Code Online (Sandbox Code Playgroud)
现在我知道这一切都取决于用户有Facebook - 不仅在他的手机上,而且在他的设置上.(我直接从我的手机6尝试了这个,它有Facebook设置,而不是来自模拟器)这个代码曾经工作正常,仍然适用于图像,而不是文本,但由于某种原因,它停止工作文本共享,也许文本本身有关,也许我的代码不好,或者Facebook,改变一些东西.
感谢您对此主题的任何想法.
为了让事情更奇怪,我发现了两件更奇怪的事情.
//有效的代码:
var myWebsite = NSURL(string: "http://www.someurl.com/")
let textToShare = "Swift is awesome! Check …Run Code Online (Sandbox Code Playgroud)