Cha*_*ung 47 objective-c uikit uiimage ios
要使用图像文件创建UiImage,我使用如下代码:
UIImage *aImage = [[UIImage imageNamed:@"demo.jpg"]autorelease];
Run Code Online (Sandbox Code Playgroud)
如果我想用URL http://example.com/demo.jpg创建一个UiImage,该怎么做?
谢谢
UPDATE
Mar*_*ams 152
这是一个三步过程.首先,您将创建一个NSURL
对象来保存我们尝试访问的URL.我们将这个URL提供给NSData
类方法,+dataWithContentsOfURL:
通过网络获取图像作为原始数据,然后使用+imageWithData:
类方法UIImage
将数据转换为图像.
NSURL *imageURL = [NSURL URLWithString:@"http://example.com/demo.jpg"];
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *image = [UIImage imageWithData:imageData];
Run Code Online (Sandbox Code Playgroud)
请注意,+dataWithContentsOfURL:
执行同步网络请求.如果在主线程上运行它,它将阻止UI,直到从网络接收到图像数据.最佳做法是在后台线程上运行任何网络代码.如果你的目标是OS 4.0+,你可以做这样的事......
NSURL *imageURL = [NSURL URLWithString:@"http://example.com/demo.jpg"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
dispatch_async(dispatch_get_main_queue(), ^{
// Update the UI
self.imageView.image = [UIImage imageWithData:imageData];
});
});
Run Code Online (Sandbox Code Playgroud)
以下是Swift中相同代码的外观:
let image_url = NSURL("http://i.imgur.com/3yY2qdu.jpg")
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
// do some task
let image_data = NSData(contentsOfURL: image_url!)
dispatch_async(dispatch_get_main_queue()) {
// update some UI
let image = UIImage(data: image_data!)
self.imageView.image = image
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
57527 次 |
最近记录: |